了解 REST 响应和 HTTP 状态代码

2024-03-26

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

有效示例:

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

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

{
    "dosomething": {
        "status": "OK",
        "results": "123"
    }
}

现在我的问题是,如果传递的参数无效(我期望一串整数),我是否返回 200 的 HTTP 响应并将错误状态传递回 JSON 响应,或者我应该传递类似 HTTP 的内容400 响应(错误请求)并在 JSON 响应中列出请求的错误/问题?

错误示例:

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

JSON 响应:

{
    "dosomething": {
        "status": "ERROR",
        "errors": [
            "Value passed: |123a| must be a integer."
        ]
    }
}

我的问题又是,如果传递的参数不是我所期望的,我是否应该在请求上传递 200 或 400 HTTP 状态?或者当请求正在运行时,这应该始终是 200 响应?

什么被认为是最佳实践?


始终使用 404。 404. 否则就会误解 URI 和资源的本质。如果http://blah.com/api/v1/dosomething/识别资源,并且123a只是它的一个参数,然后其他代码才有意义。但它没有:http://blah.com/api/v1/dosomething/123标识资源。如果不存在这样的资源,则返回404 Not Found.

您可能拥有一些实现细节handles两种资源http://blah.com/api/v1/dosomething/123 and http://blah.com/api/v1/dosomething/123a,但它不是资源。来自罗伊·菲尔丁的论文 http://www.ics.uci.edu/~fielding/pubs/dissertation/evaluation.htm#sec_6_2_3:

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

了解 REST 响应和 HTTP 状态代码 的相关文章

  • 如何从 Kubernetes 服务背后的 HTTP 请求读取客户端 IP 地址?

    我的 Web 应用程序作为 Kubernetes pod 在 SSL 的 nginx 反向代理后面运行 代理和我的应用程序都使用 Kubernetes 服务进行负载平衡 如所述here http blog kubernetes io 201
  • 将Excel数据转换为特定的JSON格式

    我收到一个 Excel 文件 xlsx 如下所示 行和列的数量可以变化 例如 它也可以如下所示 对于第一张图片中的 Excel 工作表 JSON 应如下所示 value Prename Nik Age 17 Country Switzerl
  • 在JQuery中加载本地json文件

    这里是初学者 我一直在尝试与该主题的答案不同的方法 但它们似乎都不起作用 我看到这个问题已经被问了很多 但不知何故我仍然找不到答案 我想使用本地 json 文件 该文件与我的 JavaScript 和 HTML 文件位于同一文件夹中 这样我
  • 如何让 NSURLRequest 获取 Twitter 请求令牌?

    我正在尝试使用以下代码从 Twitter 获取请求令牌 NSMutableURLRequest mURLRequest NSMutableURLRequest alloc initWithURL NSURL URLWithString ht
  • Non-Authoritative-Reason 标头字段 [HTTP]

    当我有响应标头时 我很难找出它的含义Non Authoritative Reason HSTS 我搜索了很多 但只是想出了一些关于 HSTS 从 HTTP 重定向到 HTTPS 的解释 有人能帮我吗 顺便说一句 我正在使用 Chrome T
  • 从开放的 HTTP 流中读取数据

    我正在尝试使用 NET WebRequest WebResponse 类来访问 Twitter 流 API 此处 http stream twitter com spritzer json 我需要能够打开连接并从打开的连接中增量读取数据 目
  • Google Places Api 排名=距离不起作用[重复]

    这个问题在这里已经有答案了 我使用 Google Places api 只获取距我所在位置最近的一些地点 但有些结果根本不显示 例如 tbilisimarriot 和 CourtyardbyMarriot 结果 而且列表也无法正确显示从最近
  • C# JSON 反序列化:类型是接口或抽象类,无法实例化

    我正在使用这个 C 项目 它使用用于与在线交易平台 Poloniex 进行通信的 API https github com Jojatekok PoloniexApi Net 此代码应该获取钱包中的余额 var x await polo c
  • 在选择选项标签中循环 Ajax 响应

    我必须选择多个测试和日期 当根据测试单击提交时 实验室名称将加载到选择选项中 阿贾克斯脚本 name submits click function e e preventDefault var array select selected e
  • 在 Phaser3 中从 Multiatlas 加载文件时出错

    尝试使用 Phaser 和 TexturePacker 中的多图集功能 出现此错误 VM32201 1 GET http localhost 8080 bg sd json 404 Not Found Texture js 250 Text
  • 如何告诉杰克逊在反序列化期间忽略空对象?

    在反序列化过程中 据我理解是将JSON数据转换为Java对象的过程 我如何告诉Jackson 当它读取不包含数据的对象时 应该忽略它 我正在使用 Jackson 2 6 6 和 Spring 4 2 6 我的控制器收到的JSON数据如下 i
  • 反向代理受 NTLM 保护的网站

    如何将请求代理到受 NTLM 保护的网站 例如团队基金会 and 共享点 我不断得到401 身份验证错误 根据这篇 Microsoft TechNet 文章 https www microsoft com technet prodtechn
  • 在 d3v4 堆积条形图中使用 JSON

    我找到了一个d3v3堆积条形图示例 http bl ocks org mstanaland 6100713我想使用它 因为它使用 json 数据 还有一个d3v4规范条形图示例 https bl ocks org mbostock 3886
  • AWS ALB 截断 HTTP 响应

    我有一个带有目标组的 ALB 和运行 PHP API 的 ECS 集群 我正在尝试查询 API 以获得 CSV 响应 但如果请求通过 ALB 我会得到被截断的结果 当我通过 SSH 连接到运行集群的 EC2 实例并尝试手动运行curl 通过
  • 来自 geoJSON 的 Google 地图航点

    我想从 geoJSON 文件加载行程 目前来说 它是有效的 但只有两点 但我需要添加 4 或 5 个航路点 我的代码只读取前两个点并将它们设置为起点和目的地 这是我的代码 google maps event addListener map
  • Json.Net PopulateObject - 根据ID更新列表元素

    可以定义用于以下目的的自定义 列表合并 策略JsonConvert PopulateObject method Example 我有两个模型 class Parent public Guid Uuid get set public stri
  • 如何通过 JavaScript for 循环创建 json?

    I have array选择标签
  • 如何设计 REST API 以允许返回带有元数据的文件

    假设我正在设计一个 REST API 并且我需要客户端能够获取带有元数据的文件 设计资源 操作的好方法是什么 我想到了一些想法 单个资源 即 GET files fileId 返回包含文件和带有元数据的 JSON XML 结构的多部分响应
  • PHP json_encode 将多个数组编码为一个对象

    我试图在一个 JSON 对象中返回多个数组 但在语法上遇到一些困难 一款 Android 应用程序从多个表接收更新 我希望在一个响应中返回这些更新 目前 这就是我对各种结果集进行编码的方式 json json encode array ta
  • angular.copy() 和 JSON.parse(JSON.stringify()) 之间的区别?

    有人可以解释 angular copy 和 JSON parse JSON stringify 之间的区别吗 有吗 您会推荐使用什么 angular fromJson angular toJson 与 JSON parse JSON str

随机推荐