常聽到「開 API 」,那「開 API 」是什麼意思?
API 的全名是 Application Programming Interface 的縮寫,扮演應用程式和應用程式之間的橋樑。
簡單來說,「開 API」就是後端在伺服器上設計一個介面,讓外部的應用程式或前端系統可以跟後端溝通。
就像開了一扇「門」,讓其他系統可以透過這個「門」來查資料、改資料或執行一些動作。
假設你有一個線上商店,前端的網站或手機 App 想要查詢產品資訊或是新增訂單,就需要透過這些 API 跟後端對話。
API 通常會有特定的路徑(像是 /api/products)和動作(GET、POST、PUT、DELETE 等等)。
這些動作代表不同的操作,例如:
所以只要前端知道怎麼用這些 API,就可以跟後端系統互動。
可以參考這篇文章:API 到底是什麼? 用白話文帶你認識
RESTful API 是一種設計風格,也是網路上很常用的一種「規則」,讓後端和前端或其他系統能夠很簡單地互相溝通。
RESTful API 擁有清楚又簡短的 URI,可讀性非常強,核心概念就是用一套「簡單的規則」來讓不同系統之間交換資料。
最重要的部分就是「資源」的概念。
資源可以是任何東西,像是「產品」、「訂單」或「使用者」。
RESTful API 就是用 URL(網址)來指向這些資源,然後用 HTTP 方法(也就是 GET、POST、PUT、DELETE 等等)來告訴系統你想對這些資源做什麼事。
一般 API 可能會長得像以下:
但如果使用 RESTful API 的設計風格:
更多資訊可以參考文章:認識 RESTful API
簡單來說,RESTful API 就像是一種語言,讓前後端之間能夠「透過網址和方法」來進行對話。
每個 URL 對應到一個資源,並充分利用了 HTTP 的特性,讓資料傳遞變得很清楚也很有條理。
對於前端來說,這種方式也很方便,因為他們一看就能知道 API 怎麼用,大大減少了不必要的溝通和麻煩。
我想做一個簡單的「線上產品瀏覽系統」,讓消費者可以透過這個網站線上查看產品的相關資訊。
資源是系統中可以操作或查詢的資料,可以想像成系統的核心。
而我的「線上產品瀏覽系統」的核心資料就是「產品」。
簡單來說,是你要用什麼 URL 路徑來查詢或操作這些資源。
例如:
DELETE /api/products/1:刪除 ID 為 1 的產品
可以想像成你要去一間商店買東西,你眼前只有一條路可以通往這個商店,而這條路就是「路由」。
URI 是一個通用的識別和定位資源的概念,而 URL 則是 URI 的一種具體實現方式,用於指定資源的位址和定位方式。
參考文章:URI 跟URL差異
我會遵循 RESTful API 設計風格,在 api.php 這個檔案設定路由,而 api.php 檔案會放在「routes」這個目錄下,在我前面的文章 初步了解 Laravel 目錄結構 也有先提過。
Laravel 11 的版本有大改動,沒有 api.php 這個檔案,需要額外手動新增,新增後一樣會在「routes」這個目錄下。
Method | URI | Name | Action |
---|---|---|---|
POST | api/products/ | product.store | App\Http\Controllers\ProductController@store |
GET | api/products/ | product.index | App\Http\Controllers\ProductController@index |
GET | api/products/{product} | product.show | App\Http\Controllers\ProductController@show |
PATCH | api/products/{product} | product.update | App\Http\Controllers\ProductController@update |
DELETE | api/products/{product} | product.destroy | App\Http\Controllers\ProductController@destroy |
請求格式通常是指「消費者或前端」發送給「後端」的資料格式,而回應格式則是「後端」回傳給「前端」的資料格式。
通常是以 JSON 格式來呈現,因為它容易讀取,並且和大部分系統兼容。
這個部份之後使用 Postman 測試 API 時,會比較有畫面感。
大家可以先思考一下你想使用 Laravel 做的功能的「核心」是什麼?
怎麼設計你的 API ?
下一篇要先來講一下一直還沒有提到的 MVC 架構!