在了解RESTful API之前,先簡單講解一下HTTP method。我們知道在HTTP method常使用的方法有
類似明信片的概念,傳遞的參數會被別人看見
url: http://localhost:8080/user?id=123&name=Jim
類似於信封的概念,傳遞的參數不會被看見
url: http://localhost:8080/user
request body:
{
"id": 123,
"name": "Jim"
}
好,那什麼是RESTful API呢,這不分會分成兩段,分別是RESTful及API
什麼是API呢,我個人認為是你提供一個功能讓別人使用,那你提供這個功能也必須告訴別人使用的方法。
例如:
/getUsers 是取得所有使用者的資訊,包含姓名,帳號,密碼。
/createUser 則是創建一筆user的資料。
但這時後,會發現一個問題,要使用的人不知道要用什麼Http method,要傳遞什麼資料,回傳的格式是什麼等等的疑問。
所以這時候,我們要提供一份文件,去說明整個API使用的方式。
如以下:
取得使用者列表API
Http Request
GET /getUsers
Query Parameters
Name | Type | Description | required |
---|---|---|---|
size | int | 取得幾位user | yes |
Http Response
response body
{
"UserList": [
{
"id": 1,
"name": "Jim",
"account": "JimChie"
}
]
}
有了這份文件,我就可以明白這個API如何使用了。可以大大減少溝通的成本。
除了我們自己開發的API,各大網站也有提供我們公開的API使用,例如:youtube、FB等等。
而因為每個人的喜好風格不同,寫出來的API也會有所差異,變成說在取得不同人創造的API時,我們就要去習慣不同的文件,不同的使用方法,也會造成開發上的效率下降,這時候,RESTful就誕生了!
如何使用:
method | 動作 | 說明 |
---|---|---|
GET | 查詢 | 取得一筆資料 |
POST | 新增 | 新增一筆資料 |
PUT | 更新 | 更新一筆資料 |
DELETE | 刪除 | 刪除一筆資料 |
例如:
階層路徑 | 說明 |
---|---|
GET /users | 取得所有user |
GET /users/1 | 取得id = 1的user |
GET /users/1/posts | 取得id = 1的user的所有post |
GET /users/1/posts/225 | 取得id = 1的user的 id = 225的post |
透過這種階層,可以利用路徑闡述API的用途。
符合這三種,就可以稱為RESTful API,但這只是一種風格,不是規範,所以在製造API時,不一定要造這個規定。