我有一个非常直接的问题,但很难找到正式的标准。我有这样的REST端点。
/hotels?country=someCountry&city=someCity
如果有人打算像这样打电话
酒店国家= USA&安培;城市=东京
客户提供的参数中存在冲突。响应的适当状态代码是什么(错误响应)?我知道发送 400 - 错误请求 是可以的。但我需要一个更具体的答案。
修改
我知道这可以通过/{country}/{city}/hotels
方式轻松解决。在这里,我需要从更一般的角度来解决这个问题。
另一个例子
/transactions?startDate=someDate&endDate=someLaterDate
我试试
/交易的startDate = 2012-09-03&安培;结束日期= 2001年8月4日
答案 0 :(得分:1)
我想我会对它进行一些不同的调整。你可以将其视为“#34;东京城市在美国不存在"而不是这种冲突”。
我认为这是一种更好的思考方式。在您可能不期望的国家/地区也存在一些城市。 (加拿大的巴黎,美国的巴黎)。
所以,如果你只是认为这是一个不存在的城市'在一个有效的国家,也许它只是一个404.
除了提示:您应该使用标准的ISO 2字母国家/地区代码。它们是缩写国家/地区最常用的方式。
答案 1 :(得分:1)
我甚至不会发送错误响应,而是返回状态代码200
和空列表。此请求没有任何问题,数据库中没有匹配给定查询,然后只返回[]
。
然后必须在客户端适当地处理。
如果该端点甚至不存在(例如/hotels
没有路由),则404
将是正确的响应。