Questions tagged «http-response»

8
何时在API中使用HTTP状态代码404
我正在做一个项目,在与工作人员争论了一个多小时之后。我决定知道堆栈交换中的人会说些什么。 我们正在为系统编写API,有一个查询应返回组织树或目标树。 组织树是用户所在的组织,换句话说,该树应始终存在。在组织中,应该始终存在目标树。(这是参数开始的地方)。如果树不存在,我的同事决定以状态码200回答响应是正确的。然后开始要求我修复我的代码,因为没有树时应用程序就崩溃了。 我会尽力避免火焰和愤怒。 我建议在没有树的情况下引发404错误。这至少会让我知道出了点问题。使用200时,我必须在成功回调中的响应中添加特殊检查以处理错误。我期望收到一个对象,但实际上可能会收到一个空响应,因为未找到任何内容。将响应标记为404听起来很公平。然后战争爆发了,我收到一条消息,说我不理解HTTP状态代码架构。所以我在这里,问在这种情况下404有什么问题?我什至得到了“它什么也没发现,所以返回200是正确的”的说法。我相信这是错误的,因为树应该一直存在。如果我们什么也没找到,并且期望得到结果,则应该是404。 更多信息, 我忘记添加获取的网址。 组织机构 /OrgTree/Get 目标 /GoalTree/GetByDate?versionDate=... /GoalTree/GetById?versionId=... 我的错误,两个参数都是必需的。如果提供了可以解析为日期的任何versionDate,它将返回关闭修订。如果您输入过去的内容,它将返回第一个修订版。如果按ID标识的ID不存在,我怀疑它将返回200的空响应。 额外 另外,我认为,对这个问题的最佳答案是在创建组织时创建默认对象,没有树不应该是有效的情况,应视为未定义的行为。没有两棵树就无法使用一个帐户。因此,它们应该始终存在。 我也链接了这个(一个相似但我找不到) http://viswaug.files.wordpress.com/2008/11/http-headers-status1.png

6
“无结果”是否应该是RESTful响应中的错误?
我将描述一个示例: 我开始为烘焙店制作API。该API将使人们可以在目录中搜索烘焙产品,例如使用制作的薄荷巧克力曲奇api.examplebakery.com/search?q=.....。 有人使用它来查找名为的产品pineapple-banana flavoured cookies,显然不会找到任何结果。 是否应该将其作为错误返回?搜索没有失败,API进行了搜索并成功得出结论,找不到cookie。该API不应返回404,因为确实找到了该API。

11
REST API是否应该返回500 Internal Server Error以指示查询引用了不存在的对象?
我正在使用REST API,该API驻留在为大量IoT设备处理数据的服务器上。 我的任务是使用API​​查询服务器以收集有关所述设备的特定性能信息。 在一个实例中,我获得了可用设备及其对应标识符的列表,然后稍后使用那些标识符(GUID)向服务器查询更多详细信息。 服务器正在500 Internal Server Error对这些ID之一返回a 进行查询。在我的应用程序中,引发了异常,并且我看不到有关该错误的详细信息。如果我使用Postman更仔细地检查响应,则可以看到服务器在包含以下内容的正文中返回了JSON: errorMessage: "This ID does not exist"。 忽略服务器提供ID开头的事实-这对于开发人员是一个单独的问题。 REST API是否应返回,500 Internal Server Error以报告查询引用了不存在的对象?在我看来,HTTP响应代码应严格参考REST调用的状态,而不是API的内部机制。我希望200 OK响应中包含错误和描述,这是所讨论的API专有的。 在我看来,取决于REST调用的结构,期望值可能存在差异。 考虑以下示例: http://example.com/restapi/deviceinfo?id=123 http://example.com/restapi/device/123/info 在第一种情况下,设备ID作为GET变量传递。404或500表示/restapi/deviceinfo找不到路径()或导致服务器错误。 在第二种情况下,设备ID是URL的一部分。我会更了解404 Not Found,但仍可以根据路径的哪些部分被解释为变量还是端点来争论。

2
RESTful API中的用户权限级别
假设我有一家公司对互联网上最可爱的猫进行排名。 我提供的资源/cats/可为用户提供最新,最可爱的可爱猫咪。 如果他们根本没有付款或没有注册,用户可以只获得排名前三的猫。如果付款的话,排名前10的猫是337美元,如果登录的话,排名前100位的猫是1。 简而言之,的消费者/cats/会根据其“用户排名”获得不同数量的猫。我在消费端确实有一个用户标识符,但是在消费端没有明确表示用户级别。我想通知用户他们可以在提出请求时升级其订阅。也就是说,我需要区分3只猫,因为我只提供3只猫和3只猫,因为这是用户级别所允许的。 区分由于消费者没有足够的特权而限制资源和因为消费者具有足够的特权而对其进行区分的最佳实践是什么? 客户如何知道他们是否可以提高排名?也就是说,他们只有有限的资源,因为他们没有权限。最佳做法是什么? 注意,这是实际情况的粗略简化。另外,为了澄清-感谢阅读。 更新: 我们考虑了以下选项: 仅在客户端上存储一次用户权限对象,仅在执行帐户登录或升级时对其进行查询。 null在JSON中传递值表示存在,但实际上什么也没有转移。因此,对于有3只猫的用户来说,这可能是10只猫["Garfield","Sylvester","Puss in Boots",null*7] 传递资源许可对 {cats:["Whiskers","Fluffy","Socks"],authCount:3} 我想在第一时间做到这一点,以可能的最佳方式运送最可爱的猫,我们也希望
23 rest  http  url  http-response 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.