iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 27
1
Modern Web

使用 Laravel 打造 RESTful API系列 第 27

更好的自己更好的 API

使用Laravel 8 PHP主流框架打造RESTful API(iT邦幫忙鐵人賽系列書)ISBN:9789864345304

本系列文章已集結成冊與鐵人賽文章差異內容,有以下幾點:

更新至Laravel 8、基礎的PHP重點筆記、加強製作API流程細節、加入程式設計模式,優化、重構程式碼的部分,並且於書籍前面的章節介紹Git。

讓您從製作第一個簡單的API到優化自己的程式碼,分享我的經驗給您,打造自己的最強大腦API,若有興趣的朋友可以參考看看

天瓏網路書局:
https://www.tenlong.com.tw/products/9789864345304


此篇文章同步發於個人部落格

今天來優化自己的 API (順便聊聊心情人生),前幾天都是把原本既有的程式碼拆開,現在要來優化API。

直接動手做(心情分享)

今天打算修改的部分希望盡量把原本的不足,寫成符合規範的程式碼!若你懶得看心情分享!請直接跳到下方的 修改原本設計的 URI單元,馬上實現動手做的精神!

人生難免不如意去年想要參加鐵人賽,但被一些事情影響到自己的心情,實在提不起勁,什麼也都懶得做、懶得用!沒有參加到去年的鐵人賽了

(現在出社會兩年多了!說實在真的沒有比當學生開心好好把握當學生 /images/emoticon/emoticon01.gif)。

那時心情比較低落所以看了很多書呀!心理學、正念、生活品質、斷捨離... 嘗試做很多改變。

什麼都試試看!最後成效不佳,覺得自己很廢。得到最大的體悟就是 現在認為的事情不一定是對的事,因此開始有點不敢動手做,覺得成效不好,做白工的感覺!

最後實在不行,覺得太廢了!跟朋友聊聊,發現如果遇到不同意見的人,可以在自己發表意見時先聽聽對方的想法,多多少少都會感覺得出來他為什麼這麼說的原因,換位思考一下!我覺得這很有幫助~

(雖然一件事情沒有絕對的對或錯!但是總比一直在做你以為對的事情,最後成效不佳好多了!)

現在看一看鐵人賽也快撐到完賽了!雖然不到完美但有很多收穫!

全部都歸咎於開始動手做,不開始就不會有進展,很開心我對於寫程式這方面充滿這種熱情! 哈哈哈xD

朋友跟我說,人生是一個面,工作是個點,我的人生只有工作跟運動,我現在是一條線而已,非常規律、自閉。 (工程師都這樣嗎?)

親情、友情、愛情,我好像都沒有顧好! 沒有像對程式般的熱情,那種撩下去就對了感覺!

如果你是害怕寫程式,撩下去就對了!(自己期許除了程式能力方面外,也有這樣的熱情。)

秉持著撩下去的熱情做做看就對了!沒有一次就寫到完美的Code,必須要有嘗試過的經驗,還有不斷的修正。

廢話不多馬上依照我目前的經驗分享,讓API更好維護,讓程式碼更符合統一規範的過程。

正式上線系統修改變更程式前請思考清楚!


修改原本設計的 URI

開始優化API像是我們這個送養系統的動物資源的URI /animal ,在前幾天 進階 RESTful API 討論 這篇提到,對於用戶端 請求API的使用者來說 animal 資源不是單一資源,所以 通常 都會使用 複數的形式animals ,雖然RESTful API 設計沒有絕對,但還是要來改一下URI,
api/animal -> api/animals

打開 routes/api.php 幫animal 加上 s

//加上s
Route::post('animals/{animal}/like', 'AnimalController@like');

Route::apiResource('animals', 'AnimalController');

太棒了就是這麼簡單,所以你如果已經看到今天了還沒有動手開始做,可以開始試試看。(反正我都有附上程式碼,複製貼上看看吧! )

測試出錯 解決它

儲存檔案,因為URI改變了!測試程式提示有錯誤!但我們確實要這樣修改,把URI的資源換成複數形式,所以要修改測試程式!

測試程式錯誤

測試文件!tests/Feature/AnimalTest.php 把該加上s的地方加上s就可以囉!直接附上測試通過圖

修改測試後通過畫面


API的Controller歸類在一個資料夾中

以後打算開始製作前端的畫面,因為 AnimalController 撰寫的都是API的方法,打算把它放到API資料夾中統整。

原本檔案的結構

檔案結構修改前

修改過後的檔案結構

檔案結構修改後

發現測試程式又跟你說有錯!

測試出錯 解決它

app/Http/Controllers/Api/AnimalController.php

//命名空間修改成這樣
namespace App\Http\Controllers\Api;

//並且引入繼承的Controller檔案
use App\Http\Controllers\Controller;

routes/api.php

// 修改一下 AnimalController 的路徑 Api\AnimalController
Route::post('animals/{animal}/like', 'Api\AnimalController@like');

Route::apiResource('animals', 'Api\AnimalController');

又成功打敗錯誤了!

https://ithelp.ithome.com.tw/upload/images/20191008/20105865JAhMF0LKpL.png


最後

做就對了!人生也是一樣不斷的從經驗中學習,除非你目前很多事情不知道該從哪做起,沉澱自己思考清楚設定一個期限,確定方向馬上動作吧!

為什麼上面要這樣改呢?因為寫程式當下可能知識並不清楚,所以在日後的學習後,希望它可以更好,才會有變更的需求,共勉之 一起想辦法讓程式更好維護吧!

但在這樣修改前,建議要有一定量的測試涵蓋率~不然你可以會後悔~


上一篇
讓你的程式更美好 - Service後可以加入很多功能
下一篇
更好的自己更好的 API - 如何安心升級 Laravel6
系列文
使用 Laravel 打造 RESTful API30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
阿展展展
iT邦好手 1 級 ‧ 2019-11-05 05:12:48

今次的title很像流行歌的歌名阿/images/emoticon/emoticon07.gif

我要留言

立即登入留言