日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

dingo php,dingo 配置

發布時間:2024/7/23 php 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 配置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。