Laravel 中的 POST 请求仅允许内容类型 json

Sam*_*ner 3 api json laravel

我正在构建一个 Laravel API,并且在发布数据时我需要能够仅接受“application/json”类型的请求。任何其他内容类型都应返回 406“不可接受”响应。

我知道我可以放入一些中间件来检查这一点,但是我想知道是否有更好的方法可以实现这一点?

谢谢

Ada*_*dam 5

使用这个中间件:

class WeWantJsonMiddleware
{
    /**
     * We only accept json
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if (!$request->isMethod('post')) return $next($request);


        $acceptHeader = $request->header('Accept');
        if ($acceptHeader != 'application/json') {
            return response()->json([], 406);
        }

        return $next($request);
    }
}
Run Code Online (Sandbox Code Playgroud)

(修改/sf/answers/3111777651/

并将其添加到中App\Http\Kernel$middleware检查每个帖子请求。如果您只想检查 API posts 请求,只需将其放入$middlewareGroups['api'].