dingo php,dingo 配置
Dingo包的大多数配置都预先设置好了,这样你就可以尽快的进入开发模式了,我们也可以参照config/api.php中的env()函数中的内容在.env文件中去设置。
当然也可以使用AppServiceProvider中的boot进行设置
(这个怎么设置???)
提示: 如果你使用Laravel5,那么必须使用Dingo生成的配置文件config/api.php或者是使用Service Provider设置。
生成config/api.php的方法
php artisan vendor:publish --provider="Dingo\Api\Provider\LaravelServiceProvider"
Standards Tree
一共提供了3种tree,x, prs, vnd
x: unregistered tree 本地或是私有环境
prs: personal Tree 项目不是用于商业发布的
```vnd: vender tree`` 用于公开的商业项目
在.env文件中这样配置
API_STANDARDS_TREE=vnd
还是不理解x, prs, vnd???
Subtype
subtype 是项目或工程的简称,全部小写
API_SUBTYPE=zjpblog
前缀和子域名
通常对于api,我们会使用子域名或者是位于/api栏目下,两者只要使用一个就可以了,注意不要添加版本号到子域名或者是/api下,版本号会有header的Accept处理
// 设置栏目行
API_PREFIX=api
//或者是设置子域名,两者选一个
API_DOMAIN=api.zhoujiping.com
版本 Version
两个作用:1,它是默认的版本号或者是没有提供版本号,使用这个,2是在生成api文档的时候会使用该版本号
API_VERSION=v1
名字 Name
API_NAME 的唯一作用是在使用API Blueprint命令生成文档的时候会使用,这样可以省去手动书写名字
API_NAME=Zhoujiping Blog
//如果上面的设置不成功,使用下面的
API_NAME="Zhoujiping Blog"
带条件的请求
由于缓存API请求的时候会使用客户端的缓存功能,所以默认是开启了带条件的请求,如果要关闭这项
API_CONDITIONAL_REQUEST=false
严格模式
严格模式要求客户端发送Accept头代替.env文件中的version,意味着不能通过浏览器访问api。
如果Strict模式开启并且使用了无效的Accept头,API会抛出一个Symfony\Component\HttpKernel\Exception\BadRequestHttpException异常。
你可以在.env中配置这个选项:
API_STRICT=false
认证提供者
默认情况下,只有basic认证是可以用的,后面的章节会用更多的介绍,如果需要复杂功能的认证,你需要注册服务提供者
$app['Dingo\Api\Auth\Auth']->extend('oauth', function ($app) {
return new Dingo\Api\Auth\Provider\JWT($app['Tymon\JWTAuth\JWTAuth']);
});
登录次数限制
默认情况下,是限制登录次数的,你可以通过rate limiter注册自定义登录次数限制,也可以使用系统自带的认证和取消认证的throttle模块。
要进行更为复杂的操作,也是需要注册服务提供者的
$app['Dingo\Api\Http\RateLimit\Handler']->extend(function ($app) {
return new Dingo\Api\Http\RateLimit\Throttle\Authenticated;
});
数据返回Response Transformer
Fractal 是默认的数据返回处理Transformer.
我们可以在.env文件中设置,
在config/api.php中有
//怎么设置.env????
'transformer' => env('API_TRANSFORMER', Dingo\Api\Transformer\Adapter\Fractal::class),
也不可以不用上面的方法,也可以注册成服务提供者,这样可以用更多的功能:
$app['Dingo\Api\Transformer\Factory']->setAdapter(function ($app) {
$fractal = new League\Fractal\Manager;
$fractal->setSerializer(new League\Fractal\Serializer\JsonApiSerializer);
return new Dingo\Api\Transformer\Adapter\Fractal($fractal);
});
上面这个不知道怎么用,其实可以自己建立一个Transformer文件夹,如针对User Model,声明UserTransformer 类,并继承TransformerAbstract 类(laravist上这么用)
返回格式 Response Formats
默认的数据以json进行前后端的传递,你也可以自己定义
API_DEFAULT_FORMAT=json
更高级的数据格式,如使用可以跨域访问的jsonp,需要在config/api.php中设置,或者是注册成服务提供者
Dingo\Api\Http\Response::addFormatter('json', new Dingo\Api\Http\Response\Format\Jsonp);
错误返回格式
这个非常重要,以前经常是抛出异常,错误提示非常不友好,不规范,一定要在config/api.php中定义好错误格式:下面是默认的,我们需要讨论讨论,搞个自己的错误格式
$app['Dingo\Api\Exception\Handler']->setErrorFormat([
'error' => [
'message' => ':message',
'errors' => ':errors',
'code' => ':code',
'status_code' => ':status_code',
'debug' => ':debug'
]
]);
开启Debug模式
API_DEBUG=true
dingo php,dingo 配置相关推荐
- php dingo和jwt,dingo配合laravel、JWT使用
介绍:dingo api包是给laravel和lumen提供的Restful的工具包,它可以与jwt组件一起配合快速的完成用户认证,同时对于数据和运行过程中所产生的异常能够捕获到并且可以做出对应的响应 ...
- php dingo和jwt,Laravel实现dingo+JWT api接口之配置篇
尝试了下在简书写博客..结果一般如下: 废话不多说,直接进入----| 1. 安装拓展包 一.集成dingo ①在composer.json的require字段中添加:"dingo/api& ...
- Netflix 混沌工程手册 Part 3:实践方法
本文翻译自 Netflix 工程师合著的 Chaos Engineering 一书.这本书介绍了混沌工程的主要概念,以及如何在组织中实践这些概念和经验.也许我们开发的相关工具只适用于 Netflix ...
- ROS1中Gazebo案例都有哪些机器人呢(Noetic2022)
indigo/kinetic/melodic所支持的ROS机器人也非常多,数百种.如下只列出ROS1Noetic官方支持的.其他之前版本,通过源码改写都支持ROS1. ROS2需要专用定制包,与ROS ...
- 都2021年了,你还不知道混沌工程( Chaos Engineering)?
混沌工程是什么 混沌工程是一门新兴的技术学科,初衷是通过实验性的方法,让人们建立对于复杂分布式系统在生产中抵御突发事件能力的信心. 混沌工程是一门相对高级的系统稳定性治理方法论,它提倡采用探索式的研究 ...
- 2的10次方-1的python表达式_第1章 语言处理与Python
1.尝试使用Python解释器作为一个计算器,输入表达式,如12/(4+1). >>>12/(4+1) 2 2.26个字母可以组成26的10次方或者26**10个10字母长的字符串. ...
- 第1章 语言处理与Python
1.尝试使用Python解释器作为一个计算器,输入表达式,如12/(4+1). >>> 12/(4+1) 2 2.26个字母可以组成26的10次方或者26**10个10字母长的字符串 ...
- dingo php,用laravel dingo/api创建简单的api
这篇文章主要介绍了关于用laravel dingo/api创建简单的api,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 1,修改.env配置文件添加API_STANDARDS_TRE ...
- Dingo Api 入门
#接口围绕:[ x ] 本地和私有环境 [ prs ] 公司内部app使用 [ vnd ] 公开接口standradsTree : x#项目名称subtype: mcshop#API前缀,通过www. ...
最新文章
- python全栈 day09随笔
- 29_Java_数据库_第29天(JDBC、DBUtils)_讲义
- 「LibreOJ β Round #4」子集
- windows 7下如何卸载重装mysql 压缩包版百度经验_windows下安装、卸载mysql服务的方法(mysql 5.6 zip解压...
- OpenGL:着色器shader
- php异步方案,php 伪异步执行实现方法
- JS日期比较 2013-01-31大于2013-02-01
- 渐变的alert_好看的alert样式或者弹窗样式
- EditText属性简单描述
- ubuntu中screen的使用
- 要做最快的男人,教你用Python写一个打字测试器测试你的打字速度~
- 动态独享代理ip的简介。
- 滴滴 iOS 动态化方案 DynamicCocoa 的诞生与起航
- 【转】脸识别技术发展及实用方案设计
- 怎样使用NetFlow分析网络异常流量
- Android系统开发篇(二) —— 建立Android系统开发环境之Ubuntu 20.04.4 LTS
- countifs多条件排序_使用Excel COUNTIFS进行多个条件计数
- 360路由器虚拟服务器怎么设置,路由器端口映射设置步骤
- 微信小程序云开发——常用功能2:操作云数据库一键批量导入数据(导入json文件)
- 相关系数与协方差间的转换
热门文章
- linux net 伪指令码,1.2.2. ldr pWTCON
- qt中的mysql能存入多少行数据_Qt中提高sqlite的读写速度(使用事务一次性写入100万条数据)...
- pytorch的nn.CrossEntropyLoss()函数使用方法
- MATLAB编辑GUI界面
- MFC制作打地鼠小游戏
- 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 16丨报告的记录 II【难度中等】
- 集合对象-“块数据”操作--其实是同一对象引用
- omv检查硬盘坏道_坏道检测与修复
- php phpass,ass.php · ciweiin/海洋cms 海洋影视管理系统 - 免费开源PHP - Gitee.com
- 最优化学习笔记(五)牛顿法及拟牛顿法