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 配置)