2015-08-14 3 views
0

Я пытаюсь прочитать значение pass как параметр URL, используя restify. Значение передается из кода C#, который использует RESTsharp. Я вижу, что значение в строке URL прекрасно, но когда я пытаюсь получить к нему доступ, я получаю неопределенный. Это потому, что request.params не содержит параметр, который я передал. Вместо этого он содержит структуру, которую я передал в качестве тела запроса. Что вызывает эту проблему?Проблема с параметром URL

//Nodejs 
server.post('/lab/:id', restify.jsonBodyParser(),myhandle); 

function myhandle(req, res, next) 
{ 
    console.log(JSON.strigify(req.params)); //Contains {name:abc} 
} 


//C# code 
........ 
........ 
string labstring = "{name:abc}"; 
request = new RestRequest("lab/123", Method.POST); 
request.AddParameter("application/json", labstring, ParameterType.RequestBody); 

response = RestInterface.Execute(request); 

UPDATE: Так я тестировал без jsonbodyparser, и я могу прочитать идентификатор. Но с jsonbodyparser я не могу. Это просто данные, которые я передаю как тело.

ответ

0

Хорошо, поэтому я, наконец, понял проблему. Кажется, что Restify не любит использовать bodyparser с параметром url. Когда я удаляю bodyparser, значения параметра url сохраняются в параметрах. В противном случае он содержит структуру json, которую я передаю в качестве тела запроса. Мое обходное решение заключается в использовании queryparser и передаче значения в виде строки запроса и доступа к нему как req.query.

Так что мой окончательный код выглядит следующим образом -

//Nodejs 
server.post('/lab', restify.queryParser(),restify.jsonBodyParser(),myhandle); 

function myhandle(req, res, next) 
{ 
    console.log(JSON.strigify(req.query)); //Contains {name:abc} 
} 
Смежные вопросы