laravel version: 5.5.*
為什麼不用 laravel 自帶的 response
? 原生的 response
可能不夠強大,可能不夠方便,也可能個人喜好問題,總之, 我還是比較喜歡 dingo api
這個專案
資料參考
建立一個 laravel 專案
composer create-project laravel/laravel=5.5.* --prefer-dist ./dingo
複製程式碼
安裝dingo擴充套件
composer require dingo/api
複製程式碼
新增服務提供者
php artisan vendor:publish
複製程式碼
修改env
API_STANDARDS_TREE=vnd
API_SUBTYPE=study
API_PREFIX=
API_DOMAIN=api.study.io
API_VERSION=v1
API_NAME=study
API_CONDITIONAL_REQUEST=false
API_STRICT=false
API_DEFAULT_FORMAT=json
複製程式碼
建立 api 路由
示例
$api = app('Dingo\Api\Routing\Router');
$api->version('v1', ['middleware' => 'enableCrossRequests'], function ($api) {
$api->group(['namespace' => '\App\Http\Controllers\Api'], function ($api) {
/**
* 註冊
*/
$api->post('/register', 'UsersController@register');
/**
* 登陸
*/
$api->post('/login', 'UsersController@captcha');
});
});
複製程式碼
這條線以下的是可選操作,純屬個人喜好
建立一個基礎類讓其他類繼承
namespace App\Http\Controllers\Api;
use Dingo\Api\Routing\Helpers;
class BaseController extends Controller
{
use Helpers;
/**
* 快速響應一個json格式的字串
* @param string $message 詳細資訊
* @param array $data 響應的資料
* @param int $responseCode 響應狀態碼
* @return mixed
*/
public function jsonResponse(string $message = '', array $data = [], int $responseCode = 200)
{
return $this->response->array([
'message' => $message,
'data' => $data
])->setStatusCode($responseCode);
}
}
複製程式碼