Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rest 请求参数冲突的HTTP状态?_Rest_Http_Http Status Codes - Fatal编程技术网

Rest 请求参数冲突的HTTP状态?

Rest 请求参数冲突的HTTP状态?,rest,http,http-status-codes,Rest,Http,Http Status Codes,我有一个非常直截了当的问题,但很难找到一个正式的标准。我有一个这样的REST端点 /hotels?country=someCountry&city=someCity 如果有人这样称呼它 酒店?国家=美国&城市=东京 客户端提供的参数将发生冲突。响应(错误响应)的适当状态代码是什么?我知道可以发送400-错误请求。但我需要一个更具体的答案 编辑 我知道这可以通过/{country}/{city}/hotels的方式轻松解决。在这里,我需要从更一般的角度来解决这个问题 另一个例子 /tra

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

/hotels?country=someCountry&city=someCity
如果有人这样称呼它

酒店?国家=美国&城市=东京

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

编辑

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

另一个例子

/transactions?startDate=someDate&endDate=someLaterDate
我试着


/transactions?startDate=2012-09-03&endDate=2001-08-04

我想我会对它有点不同的看法。与其说这是一场冲突,你还可以将其视为“美国不存在东京这座城市”

我认为这是一个更好的思考方式。在一些你可能想不到的国家也有一些城市。(加拿大有一个巴黎,美国有一个)

所以如果你认为这是一个“不存在的城市”在一个有效的国家,也许只是一个404。
旁白提示:您应该使用标准的ISO 2字母国家代码。它们是缩写国家最常用的方式。

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


如果该终点根本不存在(例如,没有通往
/hotels
的路线),那么
404
将是正确的回答。

我理解你的观点。我同意你的意见,我可以发送404,一旦我指定它为“/{country}/{city}/hotels”,这将是一个更好的方法。你能从更广泛的角度来回答我的问题吗?我的意思是,当一个请求的查询参数数量不能指定为路径参数时,就会发生这种情况??我同意你的看法。但这里我需要的是找到一种更方便客户端的方式来表示它。空列表确实非常方便客户端,因为客户端可以安全地迭代emtpy列表,并且很可能不会被空列表打断。这是RESTful应用程序的最佳实践。您还可以考虑将数据打包为一个响应,该响应还包含行数和分页偏移量。在这个[thread]中可以看到接受的答案。我认为开始/结束日期是另一个问题。这是一个无效的请求-它表明调用方可能犯了错误,一个好的API会很好地发挥作用,并通知调用方任何意外情况。