新建 Laravel 项目,并同步git
$ valet restart
$ cd ~/Sites
$ laravel new Lsp-api-user
访问 http://Lsp-api-user.test/,新建成功。
$ cd ~/Sites/Lsp-api-user
$ git init
$ git checkout -b api-user
$ git add . && git commit -m "Initial commit"
$ git remote add origin git@git.coding.net:qbgugu/Lsp.git
$ git pull origin api-user --allow-unrelated-histories
$ git push -u origin api-user
修改时区 config/app.php
'timezone' => 'PRC',
安装 DingoAPI,并配置
修改 composer.json
.
.
"require": {
"php": "^7.1.3",
"dingo/api": "2.0.0-alpha1",
"fideloper/proxy": "^4.0",
"laravel/framework": "5.5.*",
"laravel/tinker": "^1.0"
}
.
.
$ composer update
$ php artisan vendor:publish
修改 .env
.
.
# dingo config
API_STANDARDS_TREE=prs
API_SUBTYPE=lsp
API_PREFIX=api
# API_DOMAIN=api-user.lsp.com
API_VERSION=v1
API_DEBUG=true
修改用户表结构
修改 AppServiceProvider.php ,手动配置迁移生成的字符串长度
.
.
public function boot()
{
Schema::defaultStringLength(191);
}
.
.
修改数据表字段,需要doctrine/dbal
组件
$ composer require doctrine/dbal
新建基类
$ php artisan make:controller Api/V1/Controller
<?php
namespace App\Http\Controllers\Api\V1;
use Dingo\Api\Routing\Helpers;
use App\Http\Controllers\Controller as BaseController;
class Controller extends BaseController
{
use Helpers;
}
Sql日志:用安正超写的查询日志组件
composer require overtrue/laravel-query-logger --dev
创建自己的辅助函数
touch app/helpers.php
composer.json
"autoload": {
"files": [
"app/helpers.php"
],
.
.
composer dump-autoload
API 的异常处理
app/Providers/AppServiceProvider.php
\API::error(function (\Illuminate\Database\Eloquent\ModelNotFoundException $exception) {
abort(404);
});
\API::error(function (\Illuminate\Auth\Access\AuthorizationException $exception) {
abort(403, $exception->getMessage());
});
错误响应中增加 code 错误码字段
app/Http/Controllers/Api/Controller.php
/**
* 错误返回
*
* @param $statusCode HTTP状态码
* @param null $message 错误消息
* @param int $code 错误码
*/
public function errorResponse($statusCode, $message=null, $code=0)
{
throw new HttpException($statusCode, $message, null, [], $code);
}
统一返回
单一资源不用 data Key 进行包裹
composer require liyu/dingo-serializer-switch