如何在 Laravel 中正确地返回 HTTP 状态码

文章转发自专业的Laravel开发者社区,原始连接: https://learnku.com/laravel/t...

在 API 中返回状态码是很重要的,由于响应处理程序是工做在 API 的响应状态码之上的。php

写 API 时其中有一个重要的地方是更好的处理响应状态码。之前,我通常会使用不经常使用的 Integer 类型数字做为 HTTP 状态码 。看下面的这个例子:laravel

<?php 
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Post;
Class PostsController extends Controller{
  public function store(){
    $post = new Post(request()->only('title', 'description'));
    request()->user()->posts()->save($post);
    return response()->json(['post' => $post], 201);
    }
}

在 API 的调用期间 ,若是数据已被建立,那么将会响应 HTTP 201 状态码,可是不少的开发者并不知道 201 状态码,他们更熟悉 200 成功状态码 。使用 Symfony Response 类能够解决这个问题 。它包含了全部的 HTTP 状态码,而且使用更简单易懂的命名 。以上的代码能够修改成以下代码:json

<?php 
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Post;
use Symfony\Component\HttpFoundation\Response;
Class PostsController extends Controller{
  public function store(){
    $post = new Post(request()->only('title', 'description'));
    request()->user()->posts()->save($post);
    return response()->json(['post' => $post], Response::HTTP_CREATED);
    }
}

这个类包含了全部定义的 HTTP 状态码,先来看看其中的一些状态码:post

虽然我不以为直接写数值的 HTTP 状态码是一个坏习惯,可是使用
HTTP 状态码时用一些不解自明的命名会更好。你们编码快乐!编码

相关文章
相关标签/搜索