如何在 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 狀態碼時用一些不解自明的命名會更好。你們編碼快樂!編碼

相關文章
相關標籤/搜索