我有一个API,我需要在其上设置自定义状态代码。除了正常的标准http状态代码外,创建自己的状态代码是最佳做法吗?
即如果我的客户端发送一个空参数(orderID),我可以设置一个我自己的123的随机状态代码吗?或者有没有标准的方法来创建客户状态代码?
答案 0 :(得分:1)
现有很多代码,所以通常你不需要发明新的代码。但是,您可能会这样做,但请确保使用正确的范围。
例如,200+范围表示任何类型的成功,300 +是重定向,400 +范围是客户端错误(错误的url格式,目标未找到),500 +是服务器错误。
遵循这些准则,您可以使用各种客户端与您的API进行通信。浏览器通常应显示任何2XX状态代码的结果,并将其视为成功请求,即使特定的XX未知。
有关相当完整的状态代码列表及其正常含义,以及每个范围的一般说明,请参阅: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
599是分配的最高状态代码。我不知道它是否允许使用600+范围,但我找不到任何关于它的信息。但我无法想象你的状态不适合任何现有的类别。
<强> REST 强>:
除了返回代码之外,您还可以(应该?)查看不同的方法。您可能知道GET
(在网址中发送数据)和POST
(使用请求发送额外数据),因为它们是常用的。但你也得到了PUT
和DELETE
,这对于像这样的api特别有用。如果您搜索Restfull API
这样的术语,则应该获得大量有关此主题的文档。另外,请参阅此W3 link以获取请求方法的概述。
将它们整合在一起
要通过api创建客户,您可以发送带有新客户数据的PUT请求。 api可以为客户返回带有ID(或slug)的201 Created
。如果要删除客户,请发送DELETE请求并返回204 No content
,因为您只需要确认删除成功,而不发送任何内容。
答案 1 :(得分:1)
或者是否有任何标准方法来创建客户状态代码?
没有。我将通用HTTP错误称为400 Bad Request,并在响应正文中提供有意义的错误消息。这不是你不必编写HTTP代码,你的消费者可以完全相同地处理不同的错误响应。
答案 2 :(得分:1)
除非您愿意完成标准化过程(http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p2-semantics-26.html#considerations.for.new.status.codes),否则不要定义自定义状态代码。
否则只需使用通用的,并在响应正文中发送其他详细信息。