2

Web API 是否可以将消息正文中的值映射到参数列表?例如,如果我有这个:

public HttpResponseMessage Post(int id, string value1, string value2) {}

而不是这个:

public HttpResponseMessage Post(MyCustomClass message) {}

我通过提琴手发布 JSON,只能让后者工作。虽然我更喜欢后者,但我只是好奇是否可以让第一个示例工作。我可以使用查询字符串参数让它工作,但我无法让它工作发布表单值或 json。只是好奇。

4

1 回答 1

0

不,这是不可能的。Mike Stall 有一篇很棒的帖子详细解释了这一点 - http://blogs.msdn.com/b/jmstall/archive/2012/04/16/how-webapi-does-parameter-binding.aspx

简而言之,在 MVC 中,您只有模型绑定器,整个请求体被缓冲并馈送到绑定器中。

在 Web API 中,您同时拥有模型绑定器和格式化程序。

经验法则是 Web API 使用模型绑定器来读取查询字符串参数和格式化程序来读取正文。并且请求正文没有被缓冲——它是一个只读的、单向的、异步的流。因此,您只能从正文中读取一件事——无论是简单类型(即字符串、int)还是复杂类型,都没有关系——它只能是一件事。

于 2012-07-27T14:03:53.350 回答