【发布时间】:2010-10-30 14:27:46
【问题描述】:
我有一个带有一些方法的 Web 服务,从技术上讲,它们在客户端上做的不多。我通过 jquery/ajax 调用它
推荐的返回类型是什么,我通常会返回 JSON ......但如果它不返回任何东西......我是否返回布尔值?即 true = 成功 ... 并且 false = 错误 ??
有什么想法吗?
【问题讨论】:
标签: javascript jquery ajax json
我有一个带有一些方法的 Web 服务,从技术上讲,它们在客户端上做的不多。我通过 jquery/ajax 调用它
推荐的返回类型是什么,我通常会返回 JSON ......但如果它不返回任何东西......我是否返回布尔值?即 true = 成功 ... 并且 false = 错误 ??
有什么想法吗?
【问题讨论】:
标签: javascript jquery ajax json
您可以使用 SOAP 路由并以 XML 形式返回状态。
这几乎可以被任何东西解析。
喜欢:
<m:IsYourMethodSuccessful xmlns:m="Some-Namespace-URI”>
<return>true</return>
</m:IsYourMethodSuccessful>
这样做的好处是,如果将来您决定需要添加客户端反馈,您可以返回详细的异常信息。
或者,既然你已经在解析 json:
{ success : true }
{ success : false, exception : { ... } }
【讨论】:
我只会返回一个布尔值 - 最简单的可以工作的东西。
【讨论】:
HTTP 状态码怎么样:
200 OK
500 Error
【讨论】:
这取决于方法。对于更新和创建,我通常返回实体的服务器 ID,以及创建或更新的时间。这有助于客户在本地管理实体的状态(如果他们正在存储它们)。
【讨论】:
如果它没有返回任何内容,您应该使用 HTTP 状态码:
204 No Content
The server successfully processed the request, but is not returning any content.
HTTP 状态代码也可用于其他用途,但请注意仅将它们用于 HTTP 状态而非应用程序状态。
对于应用程序状态,您应该考虑使用标准 JSON 对象(或 SOAP 或 XML 或您使用的任何格式)。这也是 Stack Overflow 的做法,您可以通过在其上运行 HTTP 调试器来验证:
{ "response": true, "data" : <data>, "message" : <message> }
response 属性最好是 true 或 false,以保持客户端上的逻辑简单。该消息通常为空,除非发生错误,在这种情况下它将包含错误消息。
就 HTTP 状态代码而言,它们应该仅用于指示 HTTP,而不是应用程序状态代码。
5xx 服务器错误500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Timeout
505 HTTP Version Not Supported
506 Variant Also Negotiates (RFC 2295 )
507 Insufficient Storage (WebDAV) (RFC 4918 )
509 Bandwidth Limit Exceeded (Apache bw/limited extension)
510 Not Extended (RFC 2774 )
200 OK
201 Created
202 Accepted
203 Non-Authoritative Information (since HTTP/1.1)
204 No Content
205 Reset Content
206 Partial Content
207 Multi-Status (WebDAV)
【讨论】: