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上返回附加值的最佳方法_Http_Api Design - Fatal编程技术网

在Http状态代码404上返回附加值的最佳方法

在Http状态代码404上返回附加值的最佳方法,http,api-design,Http,Api Design,有时,在服务器级别,我会返回一些额外的信息以及HTTP404 例如,与其只返回一个404,这可能会让我的客户困惑路由是否正确,它还将接收如下内容 标识符“abc”未知 我通常将内容类型设置为text/plain,并在content 另一种选择是设置ReasonPhrase 哪种方式/惯例最好?设置Content或设置ReasonPhrase?您可以使用自定义错误响应并覆盖404和任何其他需要的错误 参观这里 在app/Exception/Handler.php中创建一个视图并设置此代码: /*

有时,在服务器级别,我会返回一些额外的信息以及
HTTP404

例如,与其只返回一个
404
,这可能会让我的客户困惑路由是否正确,它还将接收如下内容

标识符“abc”未知

我通常将内容类型设置为
text/plain
,并在
content

另一种选择是设置
ReasonPhrase


哪种方式/惯例最好?设置
Content
或设置
ReasonPhrase

您可以使用自定义错误响应并覆盖404和任何其他需要的错误 参观这里

在app/Exception/Handler.php中创建一个视图并设置此代码:

/*将异常呈现到响应中。 * *@param\light\Http\Request$Request *@param\Exception$e *@return\light\Http\Response

*/

公共函数呈现($request,Exception$e)

{

}

设置此用途以使其工作:

使用Symfony\Component\HttpKernel\Exception\NotFoundHttpException

欲了解更多信息,请访问


您可以使用自定义错误响应并覆盖404和任何其他您想要的错误 参观这里

在app/Exception/Handler.php中创建一个视图并设置此代码:

/*将异常呈现到响应中。 * *@param\light\Http\Request$Request *@param\Exception$e *@return\light\Http\Response

*/

公共函数呈现($request,Exception$e)

{

}

设置此用途以使其工作:

使用Symfony\Component\HttpKernel\Exception\NotFoundHttpException

欲了解更多信息,请访问


错误消息应该放在响应正文(
内容
)中,而不是放在响应原因短语中

根据:

原因短语旨在给出状态代码的简短文本描述……客户无需检查或显示原因短语

一些解释:

  • 原因短语是文本状态代码的描述,它应该描述状态代码本身,而不是自定义错误消息。如果自定义错误消息很长,或者消息具有JSON结构,那么使用原因短语肯定违反了规范
  • 正如规范所指出的,客户端(浏览器)不需要检查原因短语,这意味着某些浏览器可能会在一段时间内忽略原因短语

  • 错误消息应该放在响应正文(
    Content
    )中,而不是放在响应
    原因短语中

    根据:

    原因短语旨在给出状态代码的简短文本描述……客户无需检查或显示原因短语

    一些解释:

  • 原因短语是文本状态代码的描述,它应该描述状态代码本身,而不是自定义错误消息。如果自定义错误消息很长,或者消息具有JSON结构,那么使用原因短语肯定违反了规范
  • 正如规范所指出的,客户端(浏览器)不需要检查原因短语,这意味着某些浏览器可能会在一段时间内忽略原因短语

  • a) RFC 2616已经过时,请参见RFCs 723*而不是b)也就是说,原因短语在HTTP/2中根本不存在a)RFC 2616已经过时,请参见RFCs 723*而不是b)也就是说,原因短语在HTTP/2中根本不存在我的问题不是我们如何做,而是如果做这件事真的是个好主意。不,这不是个好主意,因为如果客户机在404上执行任何特定操作,则必须更改其代码,使其与您的代码兼容,否则他们可能不知道如何操作。有时遵循标准是好的。。。。。我不建议这样做。我的问题不是怎么做,而是这样做是否真的是一个好主意。不,这不是一个好主意,因为如果客户在404上执行任何特定操作,必须更改其代码,使其与您的代码兼容,否则他们可能不知道如何做。有时遵循标准是好的。。。。。我不建议这样做。
    if($e instanceof NotFoundHttpException)
    
    {
    
        return response()->view('missing', [], 404);
    
    }
    
    return parent::render($request, $e);