2013-08-09 17 views
6
var http = require('http'); 

var server = http.createServer(function (request, response) { 
    response.writeHead(200, {"Content-Type": "text/plain"}); 
    response.end("Hello World\n"); 
}); 

server.listen(8000); 
console.log("Server running at http://127.0.0.1:8000/"); 

をエンコードされていない要求のスペースを持つサーバーから(52)空の回答私はカールのコマンドを次のように実行:のNode.js:カール:

curl "http://127.0.0.1:8000/" 
Hello World 

// space is not encoded 
curl "http://127.0.0.1:8000/x y" 
curl: (52) Empty reply from server 

curl "http://127.0.0.1:8000/x" 
Hello World 

// space is encoded 
curl "http://127.0.0.1:8000/x%20y" 
Hello World 

私はカール52を取得する理由を説明してくださいことはできますか? ?

この場合、私は500を送り返したいと思います。それをしてもいいですか?

+0

残りのノードコードとcurlコマンドラインが必要です。うまくいけばそこにres.sendがあります... – Paul

+0

'app.get( '/ item/id')'は/ item/item1ではない '/ item/id'を意味します – Paul

+0

' -I' curlのオプションを試してみましょう説明。 (私のマシンでは、curlは 'curl http:// google.com/xy'コマンドの2つのリクエストを送信します。最初はGoogle Serverに、もう1つは' y'に)。 – elmigranto

答えて

1

res.sendが見つからない場合でも、ルートに問題があるようです。あなたはおそらく意味しました。

app.get('/item/:id', function(...) { 
    .. 
}) 

id:。これにより、req.params.idでアクセスできる変数が作成されます。

+0

完全なコードと詳細で投稿を更新しました。 – GJain

0

私もこの問題を念頭に置いています。 curlは、二重引用符で囲まれていると、既にエンコードされているURLを期待しています。 URLに空白があると、それは無効なURLとみなされます。

これはwgetコマンドとはまったく異なります。あなたはこの実行する場合:事実のこれらの種類は本当に私たちの脳をいじめる

http://127.0.0.1:8000/x%20y 

wget "http://127.0.0.1:8000/x y" 

を実際にwgetを使うと、実際として送信されるリクエストのURLをエンコードします。