我有一个Web API,它将接收来自“路由URL”和“请求正文”的输入。
示例:
http://mysite/api/GetIds/85/5
{
"ids":["1234","1234","1234","1234","1234","1234","1234","1234","1234","1234","1234","1234","1234","1234","1234","1234","1234","1234","1234"]
}
这是更好的方法吗?我知道我可以将路由vales放在请求对象中......但该对象是常见对象。所以我不想改变它。无论如何我只是想知道它是否正确?
提前致谢...
答案 0 :(得分:0)
在使用get
动词的HTTP
方法中,不支持Request Body
,因此您无法在请求正文中传递它。您必须使用请求标头,因此,在这种情况下,参数可以在url
中,这是get方法提供给您的。
您可以使用a post
请求,并将其传递给请求正文。 Post
和Put
支持请求正文。要传递jSon对象,您必须在请求标头上应用以下指令:
content-type: application/json
到web-api了解您在body
上发送的内容是json
格式,并知道如何为您反序列化。您还可以在帖子请求中使用网址上的参数,因为您分别指定了FromUri
和FromBody
。
在您的方法中,您可以:
public HttpResponseMessage Post([FromUri] int id, [FromBody] string[] ids)
{
// some process here
var model = /* create a model to output on the response body, if you need */
return Request.CreateResponse(HttpStatusCode.OK, model);
}
如果正文中包含多个属性,则可能是使用DTO
对象的好方法,并将此对象的实例作为Post
方法的参数接收。