創(chuàng)建API路由 Creating API Endpoints

API Endpoints 這個(gè)沒有辦法翻譯,就是route的意思,也有很多人(這個(gè)應(yīng)該指老外或者裝逼者),當(dāng)我們?cè)谟懻揂PIs很多人指的意思就是the routes you visit as an endpoint

API的版本GROUP

為了避免你的主程序路由到這個(gè)包的時(shí)候采用它自己的路由,我們就必須新建一個(gè)api路由的對(duì)象

$api = app('Dingo\Api\Routing\Router');

然后必須定義version group, 這樣我們可以為不同的版本創(chuàng)建相同的路由,這樣方便版本管理和開發(fā)
提示: 這里的$api->version可以理解為特殊的$api->group

$api->version('v1', function ($api) {
  
});

如果需要一個(gè)組可以響應(yīng)多個(gè)版本,這樣寫

$api->version(['v1', 'v2'], function ($api) {
  
});

這個(gè)group的用法和laravel自帶的標(biāo)準(zhǔn)group用法一樣,也可以傳遞數(shù)組作為第二個(gè)參數(shù)

$api->version('v1', ['middleware' => 'auth'], function ($api) {

});

我們的路由還可以分的在細(xì)致一點(diǎn),比如version中嵌套group

$api->version('v1', function ($api) {
    $api->group(['middleware' => 'foo1'], function ($api) {

    });

    $api->group(['middleware' => 'foo2'], function ($api) {

    });
});

關(guān)于中間件這個(gè)東西,個(gè)人還是喜歡放在每個(gè)controller中,這樣感覺會(huì)更清楚點(diǎn),是不是 ???

創(chuàng)建路由

有了上面的版本號(hào)組,現(xiàn)在就可以創(chuàng)建endpoints了,通過帶有參數(shù)為$api的閉包函數(shù),如下:

 $api->version('v1', function ($api) {
    $api->get('users/{id}', 'App\Api\Controllers\UserController@show');
});

上面這樣寫好麻煩,能不能像laravel一樣,在某個(gè)地方把App\Api\Controllers
放在一個(gè)命名空間下,這樣寫的時(shí)候,就不用寫App\Api\Controllers了,

上面的問題可以這么解決(還沒測(cè)試,不知道對(duì)不對(duì)):

 $api->version('v1', ['namespace' => 'Api\Controllers'], function ($api) {
    $api->get('users/{id}', 'UsersController@show');
});

//在app\api\controllers\UsersController.php中聲明命名空間為Api\Controllers;

還有就是php artisan make:controller 這個(gè)命令怎么搞??

因?yàn)镋ndpoint以版本號(hào)進(jìn)行分組,所以你可以使用同樣的URI為同一Endpoint創(chuàng)建不同的響應(yīng):

$api->version('v1', function ($api) {
    $api->get('users/{id}', 'App\Api\V1\Controllers\UserController@show');
});

$api->version('v2', function ($api) {
    $api->get('users/{id}', 'App\Api\V2\Controllers\UserController@show');
});

從這里可以看出,dingo推薦的api的Controller的目錄為

app/Api/v1/Controller

//還有
app/Api/v1/Request  (處理middleware)
app/Api/v1/Transfomers

要不要v1目錄,感覺太深了???

路由別名

$api->get('users/{id}', ['as' => 'users.index', 'uses' => 'App\Api\V1\UserController@show']);

我們要生成路由的時(shí)候就可以用這個(gè)別名:

app('Dingo\Api\Routing\UrlGenerator')->version('v1')->route('users.index');

// 必須提供一個(gè)版本號(hào)以便URL可以基于該版本號(hào)生成,同時(shí),你可以在不同版本號(hào)中使用同一個(gè)命名路由。

//其實(shí)感覺也沒有什么卵用,直接xx->version('v1')->route('users/{id}');  不行嗎??

控制臺(tái)查看api 路由的命令

$ php artisan api:routes
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,602評(píng)論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,275評(píng)論 6 342
  • =========================================================...
    lavor閱讀 3,649評(píng)論 0 5
  • Swashbuckle.AspNetCore Swagger 使用Asp.net core 建立API.生成漂亮的...
    JacoChan閱讀 5,301評(píng)論 0 1
  • 你為人處世的態(tài)度,一直都是一個(gè)學(xué)生被老師考察的態(tài)度。你從來沒有把自己當(dāng)成主體過。你害怕搞砸事情,害怕別人對(duì)你不好的...
    孤單一直走閱讀 182評(píng)論 0 0

友情鏈接更多精彩內(nèi)容