如果你有一个REST API可用于访问一个唯一的所有者,然后是一个注册的宠物 - 哪种状态代码最适合表示Pet存在,但在当前URL中找不到?
google_id
- 获取访问所有者对象的操作(包括对任何复杂嵌套对象的引用。
/Owner/{id}
- 获取操作以访问狗。
/Owner/{id}/Dog
- 获取操作以访问Cat。
如果请求的所有者有狗,那么应该/Owner/{id}/Cat
返回什么样的回复?
感觉这应该返回某种引用,表示有一个Pet,它将调用者指向/Owner/{id}/Cat
。
我不认为404是正确的,因为它没有使API非常容易发现(同样具有5xx状态代码),尽管没有2xx状态代码似乎能给我我想要的东西,3xx状态代码似乎推断基础设施的变化,而不是在不同的位置找到资源。
[编辑:发布此问题后不久,我发现了/Owner/{id}/Dog
状态代码。这会是更好的方式吗?]
您认为在这种情况下返回的最佳状态代码是什么?
对于某些背景
代码生成非常重要 - 此API通过内部微服务提供,该服务只能通过GraphQL端点(充当API网关)访问。这使得单个端点返回多个不同类型(即303 - See Other
,根据您拥有的类型返回Dog,Cat或Fish)相对不合需要。
最好,如果可能的话,我希望这是符合Swagger的。
答案 0 :(得分:0)
在发布此问题后,我发现了303 - See Other
状态代码,在这种情况下似乎是合适的。
P.S。我已经用这些信息更新了问题,并将问题保持开放,因为我仍然有兴趣了解其他人是否有更合适的解决方案和/或最佳实践。