在 API 中返回状态码是很重要的,因为响应处理程序是工作在 API 的响应状态码之上的。
写 API 时其中有一个重要的地方是更好的处理响应状态码。以前,我一般会使用不常用的 Integer 类型数字作为 HTTP 状态码 。看下面的这个例子:
<?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 状态码,并且使用更简单易懂的命名 。以上的代码可以修改为如下代码:
<?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 状态码,先来看看其中的一些状态码: