当前位置: 首页 > 知识库问答 >
问题:

了解REST响应和HTTP状态代码

宗政楚
2023-03-14

我想知道在REST API中应该如何响应。

有效示例:

http://blah.com/api/v1/dosomething/123

以上是一个有效的请求,当前我的HTTP状态为200,有一个JSON响应

{
    "dosomething": {
        "status": "OK",
        "results": "123"
    }
}
http://blah.com/api/v1/dosomething/123a
{
    "dosomething": {
        "status": "ERROR",
        "errors": [
            "Value passed: |123a| must be a integer."
        ]
    }
}

共有1个答案

赖淇
2023-03-14

用404。总是。404.否则就会误解URI和资源的性质。如果http://blah.com/api/v1/doSomething/标识了资源,并且123a只是它的一个参数,那么其他代码就有意义了。但是它没有:http://blah.com/api/v1/dosomething/123标识资源。如果不存在这样的资源,则返回404Not found

您可能拥有处理资源http://blah.com/api/v1/dosomething/123http://blah.com/api/v1/dosomething/123a的一些实现细节,但它不是资源。来自罗伊·菲尔丁的论文:

“资源不是存储对象。资源不是服务器用来处理存储对象的机制。资源是一个概念映射--服务器接收标识符(标识映射)并将其应用于当前映射实现(通常是特定于集合的深度树遍历和/或哈希表的组合),以查找当前负责的处理程序实现,然后处理程序实现根据请求内容选择适当的操作+响应。所有这些特定于实现的问题都隐藏在Web界面后面;它们的性质不能由只能通过Web界面访问的客户机来假设。“

 类似资料:
  • 我使用curl获取http头以查找http状态代码并返回响应。我使用以下命令获取http头

  • 我希望返回http状态代码和响应对象。如果我只是在失败场景中返回response object,则状态返回为200。但是我希望将服务返回的状态(例如:403)与响应对象一起发送。但是下面的代码只是返回消息和状态。在这种情况下,我想要响应对象orderdetails对象,它有失败原因和其他字段。如何将对象传递回客户端有什么帮助吗?

  • 假设我们有以下 API: 没有客人匹配条件时,我应该返回哪个状态码?我的意思是没有名字为假人的客人。 它应该是带有空数组的、还是

  • 如何从的结果中获取HTTP状态?

  • 我正在使用apache的HttpClient(通过Fluent API)。当我获得响应对象时,我首先执行以下操作: 如果状态代码为4xx或5xx,我将抛出异常,或者返回内容: 这里是类型为的对象。但当我运行此程序时,我得到: 我怎样才能避开这件事?

  • 问题内容: 调用JAX-WS端点时,如何获取HTTP响应代码? 在下面的示例代码中,在调用Web服务时可能会引发Exception,例如或。 在这种情况下,如何从HTTP响应中获取HTTP状态代码? 问题答案: 完成@Praveen答案后,您必须将变成原始值,然后从上下文中获取值。 如果您在托管的Web服务客户端中发生异常,请不要忘记将事务标记为回滚。