dingo php,Laravel Dingo API
提供一系列工具帮助你轻松构建自己的可拓展的API
提供工具集
内容协商
多种认证适配
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
限流
针对限定的每个路由单独生效限流
默认是按ip去限流的,可修改区别键
App('Dingo\Api\Http\RateLimit\Handler')->setRateLimiter(function ($app, $request) {
return 唯一键名;
});
路由配置: 'middleware' => 'api.throttle', 'limit' => 次数, 'expires' => 分钟数
dingo php,Laravel Dingo API相关推荐
- dingo php,Laravel+Dingo/Api 自定义响应的实现
在最近的开发开发项目中,我使用了Dingo/Api这个第三方Api库. Dingo是个很强大的Api库, 但在开发的过程中,需要自定义响应字段. 刚开始使用Ding/Api时,返回如下: { &quo ...
- dingo php,用laravel dingo/api创建简单的api
这篇文章主要介绍了关于用laravel dingo/api创建简单的api,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 1,修改.env配置文件添加API_STANDARDS_TRE ...
- dingo php,详细介绍Laravel+Dingo/Api 自定义响应
Laravel+Dingo/Api 自定义响应的实现 在最近的开发开发项目中,我使用了Dingo/Api这个第三方Api库. Dingo是个很强大的Api库, 但在开发的过程中,需要自定义响应字段. ...
- 用laravel dingo api插件库创建api的一些心得笔记
用laravel创建api是很多大型项目正在使用的方法,一般他们都是用dingo api插件库来开发自己的api.以下是ytkah用dingo api的一些心得,有需要的朋友可以关注一下 1.安装 因 ...
- php dingo和jwt,dingo配合laravel、JWT使用
介绍:dingo api包是给laravel和lumen提供的Restful的工具包,它可以与jwt组件一起配合快速的完成用户认证,同时对于数据和运行过程中所产生的异常能够捕获到并且可以做出对应的响应 ...
- 使用 TDD 测试驱动开发来构建 Laravel REST API
TDD 以及敏捷开发的先驱者之一的 James Grenning有句名言: 如果你没有进行测试驱动开发,那么你应该正在做开发后堵漏的事 - James Grenning 今天我们将进行一场基于 Lar ...
- rest laravel_如何通过测试驱动开发来构建Laravel REST API
rest laravel by Kofo Okesola 由Kofo Okesola 如何通过测试驱动开发来构建Laravel REST API (How to build a Laravel RES ...
- 使用 TDD 测试驱动开发来构建 Laravel REST API 1
TDD 以及敏捷开发的先驱者之一的 James Grenning有句名言: 如果你没有进行测试驱动开发,那么你应该正在做开发后堵漏的事 - James Grenning 今天我们将进行一场基于 Lar ...
- php邮箱验证laravel接口,Laravel 5 API 服务端支持签名授权认证
Laravel 5 API 服务端支持签名授权认证 Api Authorized Signature Middleware for Laravel 5 关于 The larsign package a ...
- Laravel 开发 API 时的前置准备
前言 使用 Laravel 有一段时间了,今天来总结我平时进行开发前的一些准备工作,如果有不合理的地方或者有更好的建议欢迎各位大佬指出纠正! 环境 PHP8 + MySQL5.7 + Nginx1.2 ...
最新文章
- oracle修改表结构的sql命令是什么,sql语句中修改表结构的命令是什么?
- Linux-LAMP-访问控制Directory
- 初级脚本Ubuntu18-20.04版本以上设置静态IP地址
- Myeclipse使用过程配置汇总
- 【Android】刷Rom:adb reboot bootloader
- configuration 命名空间_kubernetes30:monitoring命名空间处于Terminating状态的处理方法...
- Redis String 类型操作及常用命令
- 用博客见证自己的成长
- 对象存储,为什么那么火?
- IBM 收购 RedHat(红帽)!340 亿美元
- maven配置 mysql_maven项目使用mybatis+mysql
- windows高精度计数器
- mysql query profiler_Using the New MySQL Query Profiler
- [工具:iperf吞吐率测试工具 ]安装以及使用
- 3ds Max老崩溃是什么感觉?崩溃还没有保存文件?这个小细节你要注意了
- C语言编程入门——HelloWorld!
- 解决mysql sum求和返回null问题或IFNULL应用
- SATA硬盘和U盘能否热插拨
- SQL中将查询结果赋值给变量
- 【TensorFlow】InternalError:Dst tensor is not initialized
热门文章
- 学无止境,京东活动自动领取脚本
- 什么是Oracle数据库伪列,ORA-00976: 此处不允许指定的伪列或运算符
- 下班后两小时,决定你将会成为怎样的人
- C#中的Socket
- 【3D目标检测】Rethinking Pseudo-LiDAR Representation
- MATLAB:DTFT、DFT 相关题目学习
- 关于macbookpro 外接显示器帧率问题
- RatingBar星星显示不全或星星图片被拉伸解决方案
- office2019_word_多级标题(四级以上heading的配置)/自定义样式heading style
- 外卖优惠券小程序源码,美团外卖,饿了么外卖红包