Zso*_*agy 2 .net rest service wcf json
我有一个RESTful WCF服务,其方法声明如下:
[OperationContract(Name = "IncrementAge")]
[WebInvoke(UriTemplate = "/", Method = "POST", ResponseFormat = WebMessageFormat.Json)]
Person IncrementAge(Person p);
Run Code Online (Sandbox Code Playgroud)
这是实施:
public Person IncrementAge(Person p)
{
p.age++;
return p;
}
Run Code Online (Sandbox Code Playgroud)
因此,它采用Person复杂类型,将age属性递增1,并使用JSON序列化将其吐回.我可以通过向服务发送POST消息来测试这个东西,如下所示:
POST http://localhost:3602/RestService.svc/ HTTP/1.1
Host: localhost:3602
User-Agent: Fiddler
Content-Type: application/json
Content-Length: 51
{"age":25,"firstName":"Hejhaj","surName":"Csuhaj"}
Run Code Online (Sandbox Code Playgroud)
这有效.如果我想要这样的方法怎么办?
Person IncrementAge(Person p, int amount);
Run Code Online (Sandbox Code Playgroud)
所以它有多个参数.我应该如何构建POST消息以使其工作?这可能吗?
谢谢
您应该将消息体样式包装起来,以便您可以在POST请求正文中接受多个参数.
您的方法签名将是:
[OperationContract(Name = "IncrementAge")]
[WebInvoke(UriTemplate = "/", Method = "POST",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.WrappedRequest)]
Person IncrementAge(Person p, int amount);
Run Code Online (Sandbox Code Playgroud)
并且请求的正文将如下所示:
{"p": {"age":25,"firstName":"Hejhaj","surName":"Csuhaj"}, "amount": 1}
Run Code Online (Sandbox Code Playgroud)
外部JSON对象是匿名包装器.
归档时间: |
|
查看次数: |
12213 次 |
最近记录: |