成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Laravel 開發(fā) RESTful API 的一些心得

tinyq / 984人閱讀

摘要:最近用寫了一段時間的,總結(jié)一下自己的心得吧。開發(fā)我們可以看到,有些網(wǎng)站用驗證身份,有些用,當(dāng)時我也糾結(jié),然后看到一個不錯的說法。異常異常算是一大手筆了,處理好異常,可以讓你的代碼優(yōu)雅很多。

最近用 Laravel 寫了一段時間的 API,總結(jié)一下自己的心得吧。

Start

API開發(fā)我們可以看到,有些網(wǎng)站用token驗證身份,有些用OAuth2.0,當(dāng)時我也糾結(jié),然后看到一個不錯的說法。大方面,會涉及到給別人用的使用OAuth,自己使用的用token就足夠了

設(shè)計最初,最好在路由加個版本號,方便以后擴展

Route::prefix("v1")->group(function () {
    // more
});

如果前端想跨域,請使用這個很方便的包barryvdh/laravel-cors


一個簡單的接口示例

驗證

API 開發(fā)總會離不開驗證,這里推薦使用jwt-auth,1.0 快要來了,新版本的文檔也很清晰

剛用jwt-auth時有疑問,Laravel自帶的token驗證使用的是數(shù)據(jù)庫api_token字段驗證,而不見jwt-auth需要這個

然后想自己看源碼,結(jié)果QAQ

最后去問了官方 >_<

原來用戶的信息已經(jīng)存儲在token中加密

一開始有疑問,這樣保存,不會被解密嗎(真為自己智商擔(dān)憂 !_!)

后來才想起,jwt一開始就運行php artisan jwt:secret生成了秘鑰

你不泄露就保證安全了~~~

路由

當(dāng)然使用官方api的路由Route::apiResource(),一條更比五條強

路由的名字當(dāng)然是RESTful的方式

保持動詞,復(fù)數(shù)形式,見名知義

有些長的路由,應(yīng)該用什么分隔呢?

laravel用的是中劃線(-),因為谷歌收錄時,按中劃線劃分關(guān)鍵字,國內(nèi)的是按下劃線(_)收錄,具體看自己了,我是喜歡下劃線 >_<

更多看這里: 路由命名規(guī)范

表單驗證

可以使用控制器自帶的表單驗證,更推薦使用 表單類,能分離都分離出去,控制器不要處理太多事情。

能分離的代碼都不要吝嗇~~~

數(shù)據(jù)轉(zhuǎn)換

Laravel自帶的API Resource

用起來真的很方便,不過發(fā)現(xiàn)一個問題,--collection的格式總是轉(zhuǎn)不過來,后來直接放棄了

單個的使用Resources

集合的使用Resources::collection()發(fā)現(xiàn),特別好用 >_<

不得不說,多對多關(guān)聯(lián)時,Laravel處理得太好了條件關(guān)聯(lián)

在上面這個例子中,如果關(guān)聯(lián)沒有被加載,則 posts 鍵將會在資源響應(yīng)被發(fā)送給客戶端之前被刪除。

在有不確定是否輸出關(guān)聯(lián)數(shù)據(jù)時,這是一個很有用的功能?。?!

響應(yīng)輸出

當(dāng)時在 laravel-china 看到的這個帖子,然后覺得這個方式不錯,所以自己也這樣子,使用基類的方法統(tǒng)一響應(yīng)輸出。

異常

異常算是一大手筆了,處理好異常,可以讓你的代碼優(yōu)雅很多。
AppExceptionsHandler::render方法可以捕獲到很多有用的異常,例如,我的代碼是這樣寫的:

UnauthorizedHttpException這個是捕獲jwt異常
ValidationException這個是表單異常,捕獲之后,表單錯誤消息可以很好的格式化,
ModelNotFoundException這個是模型找不到的異常,捕獲之后,可以直接在控制器直接這樣

// 未捕獲之前的寫法
public function show($id)
{
    $user = User::find($id);
    if (! $user) {
        
    }
    
    // do something
}

// 現(xiàn)在
public function show($id)
{
    $user = User::findOrFail($id);
}
// 甚至這樣
public function show(User $user)
{
    // do something
}

下面這兩個異??梢圆徊东@,只是方便開發(fā)中查看錯誤消息

NotFoundHttpException404路由找不到的異常,沒什么好說的了
MethodNotAllowedHttpException這個是方法不對應(yīng),比如你是get路由,卻post請求

文檔

差點忘了這個,文檔非常非常重要

我是不怎么喜歡在注釋寫文檔的

使用swagger-ui+swagger-edit

下載swagger-ui

只需要dist目錄的東西(其他可以刪除了)

下載swagger-editor

只要dist目錄的東西和根目錄的index.html

我還把swagger-editorindex.html改成了edit.html,然后把這兩個東西整合到同一個目錄(記得修改css,js的位置)

新建兩個文件api.json,api.yaml 大概就和圖中差不多

要修改圖中箭頭所示成為api.json的位置

訪問edit.html可以書寫文檔

編寫語法

訪問index.html可以查看文檔

edit.html寫好之后,導(dǎo)出json,然后粘貼到api.json文件

記得也把寫好的格式保存到api.yaml,因為清楚緩存之后,下次訪問時會消失

自己寫了一個packages

就方便創(chuàng)建控制器,驗證

所有控制器繼承重寫過的基類,響應(yīng)輸出方便。

例如完整驗證只需要三秒鐘

第一秒: php artisan api:auth

第二秒: 出現(xiàn)圖代表成功;

* 第三秒: 拿出手臂的勞力士,確定只過了三秒

更多的使用:laravel-api-helper


工作和API開發(fā)有關(guān),用到其他有經(jīng)驗了再回來補補。

更多參考

RESTful API 設(shè)計指南

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/28325.html

相關(guān)文章

  • PHP / Laravel API 開發(fā)推薦閱讀清單

    showImg(https://segmentfault.com/img/bV6aHV?w=1280&h=800); 社區(qū)優(yōu)秀文章 Laravel 5.5+passport 放棄 dingo 開發(fā) API 實戰(zhàn),讓 API 開發(fā)更省心 - 自造車輪。 API 文檔神器 Swagger 介紹及在 PHP 項目中使用 - API 文檔撰寫方案 推薦 Laravel API 項目必須使用的 8 個...

    shmily 評論0 收藏0
  • 關(guān)于JWT(Json Web Token)思考及使用心得

    摘要:什么是是一個開放的數(shù)據(jù)交換驗證標(biāo)準(zhǔn),一般用來做輕量級的鑒權(quán)。由于許多接口設(shè)計是遵循無狀態(tài)的比如,所以是這一套機制的替代方案。組成由三部分組成頭部載荷簽名。 什么是JWT? JWT(Json Web Token)是一個開放的數(shù)據(jù)交換驗證標(biāo)準(zhǔn)rfc7519(https://tools.ietf.org/html/r...,一般用來做輕量級的API鑒權(quán)。由于許多API接口設(shè)計是遵循無狀態(tài)的(...

    taohonghui 評論0 收藏0
  • PHP相關(guān)

    摘要:的機器學(xué)習(xí)庫的機器學(xué)習(xí)庫,包括算法交叉驗證神經(jīng)網(wǎng)絡(luò)等內(nèi)容。在即將到來的大會上,她將和大家分享在機器學(xué)習(xí)領(lǐng)域的全新可能。入門總結(jié)入門相關(guān),如安裝配置基本使用等。 基于 Swoole 開發(fā) PHP 擴展 Swoole-1.9.7 增加了一個新特性,可以基于 Swoole 使用 C++ 語言開發(fā)擴展模塊,在擴展模塊中可以注冊 PHP 內(nèi)置函數(shù)和類?,F(xiàn)在可以基于 Swoole 來編寫 PHP ...

    lewinlee 評論0 收藏0
  • 后端API從入門到放棄指北

    摘要:菜鳥教程框架中文手冊入門目標(biāo)使用搭建通過對數(shù)據(jù)增刪查改沒了純粹占行用的拜 后端API入門學(xué)習(xí)指北 了解一下一下概念. RESTful API標(biāo)準(zhǔn)] 所有的API都遵循[RESTful API標(biāo)準(zhǔn)]. 建議大家都簡單了解一下HTTP協(xié)議和RESTful API相關(guān)資料. 阮一峰:理解RESTful架構(gòu) 阮一峰:RESTful API 設(shè)計指南 RESTful API指南 依賴注入 D...

    Jeffrrey 評論0 收藏0
  • 后端API從入門到放棄指北

    摘要:菜鳥教程框架中文手冊入門目標(biāo)使用搭建通過對數(shù)據(jù)增刪查改沒了純粹占行用的拜 后端API入門學(xué)習(xí)指北 了解一下一下概念. RESTful API標(biāo)準(zhǔn)] 所有的API都遵循[RESTful API標(biāo)準(zhǔn)]. 建議大家都簡單了解一下HTTP協(xié)議和RESTful API相關(guān)資料. 阮一峰:理解RESTful架構(gòu) 阮一峰:RESTful API 設(shè)計指南 RESTful API指南 依賴注入 D...

    sf190404 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<