Laravel 快速配置dingo/api

liaohui5發表於2019-03-01

laravel version: 5.5.*

為什麼不用 laravel 自帶的 response ? 原生的 response 可能不夠強大,可能不夠方便,也可能個人喜好問題,總之, 我還是比較喜歡 dingo api 這個專案

資料參考

github

線上文件

中文社群

建立一個 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);
    }
}
複製程式碼

相關文章