2013-08-09 12 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/"); 

wykonałem następujące komendy Zwijanie:node.js curl: (52) Puste odpowiedź od serwera z miejscem na żądanie nie kodowane

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 

Czy możesz wyjaśnić, dlaczego mam wywinięcia 52 ?? ?

W tym przypadku chcę wysłać 500 z powrotem. Czy mogę to zrobić?

+0

potrzebujemy reszty kodu węzła i linii poleceń curl. Mam nadzieję, że tam jest res.send ... – Paul

+0

'app.get ('/ item/id')' oznacza dosłownie '/ item/id' nie'/item/item1' – Paul

+0

Spróbuj opcji '-I' curl dla wyjaśnienie. (Na moim komputerze curl przesyła 2 żądania dla 'curl http: // google.com/xy' command: pierwsza do Google Server, a druga do' y'.) – elmigranto

Odpowiedz

1

Nawet z brakującym numerem res.send wygląda na problem z trasą. prawdopodobnie miałeś na myśli.

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

Uwaga na : przed id. Tworzy to zmienną, do której można uzyskać dostęp za pomocą parametru req.params.id.

+0

Zaktualizowałem swój post z pełnym kodem i szczegółami. – GJain

0

Mam również na myśli to pytanie. Domyślam się, że curl oczekuje już zakodowanego adresu URL, jeśli jest cytowany podwójnymi cudzysłowami. Jeśli znajdzie spację w adresie URL, uzna to za niepoprawny adres URL.

A to jest zupełnie inne niż polecenie wget. Jeśli uruchomić to:

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

faktycznie Wget koduje url dla Ciebie i prośba rzeczywiście zostanie wysłana jako:

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

Tego rodzaju fakty naprawdę drażnić nasze mózgi.

Powiązane problemy