请求参数冲突的 HTTP 状态?
HTTP status for request param conflict?
我有一个非常直接的问题,但很难找到一个正式的标准。我有一个这样的 REST 端点。
/hotels?country=someCountry&city=someCity
如果有人要这样称呼它
hotels?country=usa&city=tokyo
客户端提供的参数会有冲突。响应(错误响应)的适当状态代码是什么?我知道可以发送 400 - Bad Request。但我需要一个更具体的答案。
编辑
我知道这可以通过 /{country}/{city}/hotels
方式轻松解决。在这里,我需要从更一般的角度来解决这个问题。
另一个例子
/transactions?startDate=someDate&endDate=someLaterDate
我试试
/transactions?startDate=2012-09-03&endDate=2001-08-04
我想我会对其进行一些不同的调整。这不是冲突,您也可以将其视为 "The city Tokyo does not exist in the US".
我认为这是一种更好的思考方式。还有一些城市存在于您可能意想不到的国家/地区。 (加拿大有一个巴黎,美国有一个)。
因此,如果您只是认为这是一个有效国家/地区的 'non-existent city',也许它只是一个 404。
旁白提示:您应该使用标准的 ISO 2 字母国家/地区代码。它们是缩写国家/地区的最常用方式。
我什至不会发送错误响应,而是 return 状态代码 200
和一个空列表。这个请求没有任何问题,只是在数据库中没有匹配给定查询,然后只是 return []
。
这必须在客户端中适当处理。
如果那个端点根本不存在(例如 /hotels
没有路由),那么 404
将是正确的响应。
我有一个非常直接的问题,但很难找到一个正式的标准。我有一个这样的 REST 端点。
/hotels?country=someCountry&city=someCity
如果有人要这样称呼它
hotels?country=usa&city=tokyo
客户端提供的参数会有冲突。响应(错误响应)的适当状态代码是什么?我知道可以发送 400 - Bad Request。但我需要一个更具体的答案。
编辑
我知道这可以通过 /{country}/{city}/hotels
方式轻松解决。在这里,我需要从更一般的角度来解决这个问题。
另一个例子
/transactions?startDate=someDate&endDate=someLaterDate
我试试
/transactions?startDate=2012-09-03&endDate=2001-08-04
我想我会对其进行一些不同的调整。这不是冲突,您也可以将其视为 "The city Tokyo does not exist in the US".
我认为这是一种更好的思考方式。还有一些城市存在于您可能意想不到的国家/地区。 (加拿大有一个巴黎,美国有一个)。
因此,如果您只是认为这是一个有效国家/地区的 'non-existent city',也许它只是一个 404。
旁白提示:您应该使用标准的 ISO 2 字母国家/地区代码。它们是缩写国家/地区的最常用方式。
我什至不会发送错误响应,而是 return 状态代码 200
和一个空列表。这个请求没有任何问题,只是在数据库中没有匹配给定查询,然后只是 return []
。
这必须在客户端中适当处理。
如果那个端点根本不存在(例如 /hotels
没有路由),那么 404
将是正确的响应。