LSP 用户端API 一 开篇

本文详细介绍如何使用Laravel框架从零开始搭建一个RESTful API项目,包括项目初始化、git同步、环境配置、依赖安装、数据库设置及异常处理等关键步骤。

新建 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

转载于:https://my.oschina.net/beanho/blog/2874870

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值