假设我们有添加新酒店的服务:
> POST /hotel
> <hotel>
> <a>aaa</a>
> <b>aaa</b>
> <c>aaa.......this is 300K</c>
> </hotel>
Run Code Online (Sandbox Code Playgroud)
然后我们有一个得到:
> GET /hotel
< HTTP/1.1 200 OK
< <hotel>
< <a>aaa</a>
< <b>aaa</b>
> <c>aaa.......this is 300K</c>
< </hotel>
Run Code Online (Sandbox Code Playgroud)
问题是我们为初始POST创建返回什么?我们想要返回ID(在服务器上生成)以获得新资源的"参考",但我们不想返回所有酒店数据,因为在我们的情况下,其中一个数据字段是〜300K的平面文件.
所以你应该回来:
< HTTP/1.1 200 OK
< <hotel>
< <id>123</id>
< </hotel>
Run Code Online (Sandbox Code Playgroud)
或者你应该返回完整的对象:
< HTTP/1.1 200 OK
< <hotel>
< <id>123</id>
< <a>aaa</a>
< <b>aaa</b>
> <c>aaa.......this is 300K</c>
< </hotel>
Run Code Online (Sandbox Code Playgroud)
??
我对宁静的最佳实践感兴趣.
注意:这篇相关文章更多地讨论了返回什么,但更少关于如何返回它.
我的c#/ WebApi服务器代码如下所示:
[HttpPost]
public HttpResponseMessage Logout()
{
// do some stuff here ...
return Request.CreateResponse(HttpStatusCode.OK);
}
Run Code Online (Sandbox Code Playgroud)
在客户端,我使用jquery 2.0.3进行ajax调用
ADDED:Jquery代码(typescript)......
var ajaxSettings: JQueryAjaxSettings = {};
ajaxSettings.type = 'POST';
ajaxSettings.data = null;
ajaxSettings.contentType = "application/json; charset=utf-8";
ajaxSettings.dataType = "json";
ajaxSettings.processData = false;
ajaxSettings.success = (data: any, textStatus: string, jqXHR: JQueryXHR) => {
console.log("Success: textStatus:" + textStatus + ", status= " + jqXHR.status);
};
ajaxSettings.error = (jqXHR: JQueryXHR, textStatus: string, errorThrow: string) => {
console.log("Error: textStatus:" + textStatus + ", errorThrow = " …Run Code Online (Sandbox Code Playgroud)