405 Not Allowed 处理器

Edit This Page

如果你的 Slim 框架应用程序有一个路由匹配到了当前的 HTTP 请求 URI 而非 HTTP 请求方法,程序将调用 Not Allowed 处理器并返回一个 HTTP/1.1 405 Not Allowed 响应到 HTTP 客户端。

默认的 Not Allowed 处理器

每个 Slim 框架应用程序都有一个默认的 Not Allowed 处理器。该处理器将 HTTP 响应状态设置为 405,将内容类型设置为 text/html,它还会添加一个包含由逗号分隔的已被允许访问的 HTTP 方法组成的列表的 Allowed: HTTP 头它还会在 HTTP 响应体中写入一个简单的注释。

自定义 Not Allowed 处理器

Slim 框架应用程序的 Not Allowed 处理器是一个 Pimple 服务。你可以通过应用程序容器对自定义 Pimple factory 方法进行定义,来创建自定义的 Not Allowed 处理器取代默认的

// Create Slim
$app = new SlimApp();
// get the app"s di-container
$c = $app->getContainer();
$c["notAllowedHandler"] = function ($c) {
 return function ($request, $response, $methods) use ($c) {
 return $c["response"]
 ->withStatus(405)
 ->withHeader("Allow", implode(", ", $methods))
 ->withHeader("Content-type", "text/html")
 ->write("Method must be one of: " . implode(", ", $methods));
};

注意 Check out Not Found docs for pre-slim creation method using a new instance of SlimContainer

在这个例子中,我们定义了一个新的 notAllowedHandler factory ,它将返回一个 callable 。返回的 callable 接收两个参数:

  1. 一个 PsrHttpMessageServerRequestInterface 实例
  2. 一个 PsrHttpMessageResponseInterface 实例
  3. 一个由已允许访问的 HTTP 方法名组成的数组

这个 callable 必须 返回一个恰当的 PsrHttpMessageResponseInterface 实例。

文章导航