请求参数冲突的HTTP状态?

时间:2018-02-05 07:38:34

标签: rest http http-status-codes

我有一个非常直接的问题,但很难找到正式的标准。我有这样的REST端点。

/hotels?country=someCountry&city=someCity

如果有人打算像这样打电话

酒店国家= USA&安培;城市=东京

客户提供的参数中存在冲突。响应的适当状态代码是什么(错误响应)?我知道发送 400 - 错误请求 是可以的。但我需要一个更具体的答案。

修改

我知道这可以通过/{country}/{city}/hotels方式轻松解决。在这里,我需要从更一般的角度来解决这个问题。

另一个例子

/transactions?startDate=someDate&endDate=someLaterDate

我试试

/交易的startDate = 2012-09-03&安培;结束日期= 2001年8月4日

2 个答案:

答案 0 :(得分:1)

我想我会对它进行一些不同的调整。你可以将其视为“#34;东京城市在美国不存在"而不是这种冲突”。

我认为这是一种更好的思考方式。在您可能不期望的国家/地区也存在一些城市。 (加拿大的巴黎,美国的巴黎)。

所以,如果你只是认为这是一个不存在的城市'在一个有效的国家,也许它只是一个404.

除了提示:您应该使用标准的ISO 2字母国家/地区代码。它们是缩写国家/地区最常用的方式。

答案 1 :(得分:1)

我甚至不会发送错误响应,而是返回状态代码200和空列表。此请求没有任何问题,数据库中没有匹配给定查询,然后只返回[]。 然后必须在客户端适当地处理。

如果该端点甚至不存在(例如/hotels没有路由),则404将是正确的响应。