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
HTTP状态404或400(如果不存在此类API端点)? 当客户端发送了由于格式不正确而无法处理的请求时,将使用状态代码400 Bad Request 当请求的资源不存在/找不到时,使用状态代码404未找到_Http_Http Status Code 404_Http Status Codes_Api Design_Http Status Code 400 - Fatal编程技术网

HTTP状态404或400(如果不存在此类API端点)? 当客户端发送了由于格式不正确而无法处理的请求时,将使用状态代码400 Bad Request 当请求的资源不存在/找不到时,使用状态代码404未找到

HTTP状态404或400(如果不存在此类API端点)? 当客户端发送了由于格式不正确而无法处理的请求时,将使用状态代码400 Bad Request 当请求的资源不存在/找不到时,使用状态代码404未找到,http,http-status-code-404,http-status-codes,api-design,http-status-code-400,Http,Http Status Code 404,Http Status Codes,Api Design,Http Status Code 400,我的问题是,当客户端向我的API不提供服务的端点发送请求时,以下哪种状态代码更合适? 端点是否应被视为“资源”,从而返回404?我的问题是,如果客户机只检查状态代码,他们无法区分表示他们到达了正确端点的404,但没有与他们的查询匹配的结果,与表示他们查询了不存在的端点的404之间的区别 或者,我们是否应该期望客户机事先知道所有可用的API端点,从而将其请求视为格式错误,并在其试图到达的端点不存在时返回400 这可能取决于端点是否为REST。如果它们是REST端点,则客户端不需要事先了解API,而

我的问题是,当客户端向我的API不提供服务的端点发送请求时,以下哪种状态代码更合适?

端点是否应被视为“资源”,从而返回
404
?我的问题是,如果客户机只检查状态代码,他们无法区分表示他们到达了正确端点的
404
,但没有与他们的查询匹配的结果,与表示他们查询了不存在的端点的
404
之间的区别

或者,我们是否应该期望客户机事先知道所有可用的API端点,从而将其请求视为格式错误,并在其试图到达的端点不存在时返回
400

这可能取决于端点是否为REST。如果它们是REST端点,则客户端不需要事先了解API,而是能够通过从单个根端点导航API来了解所有相关的API端点。在这种情况下,我想
404
更合适

在我目前的具体案例中,这是一个内部(非REST)HTTP API,我希望客户端事先了解所有API端点,因此我倾向于
400
,为了避免出现问题,
404
访问错误的端点可能会被误解为
404
,表明他们从正确的端点寻找的东西找不到


想法?

为了方便起见,许多现代API为开发人员提供了人类可读的端点。然而,REST的目的是将URL视为不透明的—它们可能碰巧包含语义内容,但不能依赖于此。没有“格式错误”的URL。只有一个指向某物的URL和一个不指向某物的URL

现在,这就是剩下的教条(也可以说是HTTP 1.1规范)。这并不意味着这是你应该做的。如果您的API只有一个内部客户机,而且这一点不会改变,那么您在设计自己的标准时就有很大的灵活性。只是要确保记录下他们,特别是那些可能会让刚从大学毕业的人感到困惑的人,当你离开的时候,他们雇用他来代替你