我正在编写Web Api服务,以便从客户端API的回调中接收数据。由于他们将传入服务指定为接收JSON,我假设他们的回调也会以JSON格式发布数据。但是,在测试我的API时,我发现它们实际上是在发布表单数据。
这本身并不是问题,因为API接受多种格式的POST数据。但是,当接受数据为JSON时,我可以这样做:
public IHttpActionResult Post(Message message)
{
...
}
public class Message
{
[JsonProperty("name")]
public string NameParameter { get; set; }
}
这允许我发布{ "name": "Dave" }
之类的json,并将我的处理程序中的参数称为message.NameParameter
。
但是,当数据作为表单数据(application/x-www-form-urlencoded
)收到时,例如name=Dave
,JsonProperty
属性不执行任何操作(鉴于属性名称,这一点并不令人惊讶),{{ 1}}最终为message.NameParameter
。
当然,我可以更改null
类中的属性名称以匹配POST参数名称,但在某些情况下,POST参数的名称不符合我们的编码标准,所以我会更喜欢通过属性指定绑定的方法,与处理JSON数据的方式相同。