Laravel Dingo API
2017-06-02 00:00
357 查看
提供一系列工具帮助你轻松构建自己的可拓展的API
多种认证适配
API版本号
访问限制与限流
输出数据转换
错误和异常处理
内部请求
API文档
API_SUBTYPE 项目简称(小写)
API_PREFIX 前缀(建议值 api)
API_DOMAIN 子域名(建议值 api.myapp.com)
API_VERSION 默认版本号(建议值 v1)
API_NAME api名称(用于生成文档)
API_CONDITIONAL_REQUEST 条件请求(用于客户端缓存api,默认true)
API_STRICT 严格模式(强制要求客户端提供Accept头指定版本号,默认false)
API_DEFAULT_FORMAT 响应格式(默认json)
API_DEBUG debug信息追加到异常跟踪栈上(默认false)
直接返回集合或对象(自动处理为json)
响应构建器
响应输出前morph变形流程
基类控制器引入响应构建器
Trait:
使用:
正常响应
异常响应
增加Http头部
增加元数据
设置状态码
响应变形
监听可选事件
调用模式
预先注册好,输出时直接返回对象:
预先未注册,输出对象前手动转换:
提供工具集
内容协商多种认证适配
API版本号
访问限制与限流
输出数据转换
错误和异常处理
内部请求
API文档
安装
composer require dingo/api:1.0.*@dev # 服务注册 - Lumen下: #在`bootstrap/app`中注册 $app->register(Dingo\Api\Provider\LumenServiceProvider::class); - Laravel下: #在`config/app.php`中注册 `Dingo\Api\Provider\LaravelServiceProvider::class` #发布配置 php artisan vendor:publish --provider="Dingo\Api\Provider\LaravelServiceProvider" # Facad注册 - Dingo\Api\Facade\API - Dingo\Api\Facade\Route
env配置
API_STANDARDS_TREE 标准树x未注册树 - 用于本地开发(建议值)
prs私有树 - 用于非商业交付项目
vnd第三方树 - 用于公开交付项目
API_SUBTYPE 项目简称(小写)
API_PREFIX 前缀(建议值 api)
API_DOMAIN 子域名(建议值 api.myapp.com)
API_VERSION 默认版本号(建议值 v1)
API_NAME api名称(用于生成文档)
API_CONDITIONAL_REQUEST 条件请求(用于客户端缓存api,默认true)
API_STRICT 严格模式(强制要求客户端提供Accept头指定版本号,默认false)
API_DEFAULT_FORMAT 响应格式(默认json)
API_DEBUG debug信息追加到异常跟踪栈上(默认false)
路由接管
$router = app('Dingo\Api\Routing\Router'); $api->version('v1', function ($api) { $api->get(路径, 'MyController@MyAction'); $api->group(['middleware' => 'foo'], function ($api) { }); });
响应
响应模式直接返回集合或对象(自动处理为json)
响应构建器
响应输出前morph变形流程
response > transformers > formatters > 输出
基类控制器引入响应构建器
Trait:
use Dingo\Api\Routing\Helpers;
使用:
$this->response或者
$this->response()
正常响应
return $this->response->array($arrayData)
return $this->response->item($obj, $transfomrer)
return $this->response->collection($objs, $transfomrer)
return $this->response->paginator($paginatedObjs, $transfomrer)
return $this->response->noContent()
return $this->response->created([$uri])
异常响应
return $this->response->error($msg, $statusCode)
return $this->response->errorNotFound([$msg])
return $this->response->errorBadRequest([$msg])
return $this->response->errorForbidden([$msg])
return $this->response->errorInternal([$msg])
return $this->response->errorUnauthorized([$msg])
增加Http头部
$this->response->withHeader($name, $value)
增加元数据
$this->response->addMeta($name, $value)|setMeta([$name,=>$value])
设置状态码
$this->response->setStatusCode($statuCode)
响应变形
监听可选事件
ResponseIsMorphing、ResponseWasMorphed并
handle响应
错误处理
错误时直接抛出相应的HTTP异常,dingo会自动设置json输出及匹配的状态码Transformer
默认使用Fractal Transfomer
调用模式
预先注册好,输出时直接返回对象:
app('Dingo\Api\Transformer\Factory')->register('‘MyModel, 'MyModelTransformer')
预先未注册,输出对象前手动转换:
return $this->response->item($obj, $transfomrer)
认证
内置支持的认证适配器HTTP Basic (Dingo\Api\Auth\Provider\Basic)
JSON Web Tokens (Dingo\Api\Auth\Provider\JWT)
OAuth 2.0 (Dingo\Api\Auth\Provider\OAuth2)
调试请求
头部必须带上Accept: application/vnd.YOUR_SUBTYPE.v1+json
相关文章推荐
- Laravel实现dingo+JWT api接口之配置篇
- Laravel & Lumen RESTFul API 扩展包:Dingo API(一) —— 安装配置篇
- Laravel & Lumen RESTFul API 扩展包:Dingo API(一) —— 安装配置篇
- laravel 5.4 + dingo api + jwt
- laravel 使用 Dingo开发api
- Laravel & Lumen RESTFul API 扩展包:Dingo API(二) —— 创建 API Endpoint(路由)
- Laravel 5 开发API(Dingo Api + JWT)
- laravel和dingoapi的结合使用
- Laravel & Lumen RESTFul API 扩展包:Dingo API(三) —— Response(响应)
- Laravel & Lumen RESTFul API 扩展包:Dingo API(四) —— 错误和异常响应
- Laravel实现dingo+JWT api接口之配置篇
- laravel dingo/api 安装与配置
- Laravel & Lumen RESTFul API 扩展包:Dingo API(五) —— 转化器(Transformer)
- Laravel5.2+Dingo/API+JWTauth的想着问题
- laravel dingo API返回自定义错误信息
- Laravel & Lumen RESTFul API 扩展包:Dingo API(一) —— 安装配置篇
- Laravel & Lumen RESTFul API 扩展包:Dingo API(二) —— 创建 API Endpoint(路由)
- laravel 5.5 使用 dingo 开发 API
- laravel 5.4 + dingo api + jwt 代替Passport
- Dingo + Laravel + JWT + Entrust + memcache 实现API设计