HTTP Networking(7) http methods
http methods
HTTP methods 是用來告訴伺服器,現在我們想對資料庫進行哪種操作,包含了 GET, POST, PUT, or DELETE 等方法。
這些方法會對應到 CRUD 四種不同的動作。
- Create: POST 方法
- Read: GET 方法
- Update: PUT 方法
- Delete: DELETE 方法
就像使用者操作社群平台貼文一樣,他們會 新增、修改、刪除、讀取貼文,而那正是 CRUD 對資料庫做的事。
Status code
- Errors: 當client端向server發出 http request 出錯時,會出現 error。
例如: url 錯誤、網路斷線。 - Status code: 當http request成功送到伺服器,但伺服器端有錯誤時,會在 response 中用 status code 回應。
例如: 沒有權限取得資料,伺服器掛掉。
以下是常見的 Status code
- 200: OK 一切正常
- 201: Created. 資源成功建立,通常用在 POST request
- 301: Moved permanently. 請求的資源已經移到別處,例如網址更改。
- 400: Bad request. 前端http request 發生錯誤
- 401: Unauthorized. 請求權限不足,例如少了 api key。
- 404: Not found. 請求的資源不存在
- 500: Internal server error. 伺服器錯誤。
GET methods
http get 方法可從 server 取回特定資料的 copy,並不是真的將資料從 server 拿出,而僅是該資料當下狀態的 copy 而已。
通常認為 get 是安全的,因為並不會更改或刪除資料庫裡的資料。
以下為使用 fetch() api ,送出 get request
1 | await fetch(url, { |
fetch() api,第二個參數可傳入物件,以下為物件可能的值。
- method: The HTTP method of the request, like GET.
- headers: The headers to send.
- mode: Used for security, we’ll talk about this in future courses.
- body: The body of the request. Often encoded as JSON.
POST methods
post 方法會傳資料給 sever,通常會在資料庫中新增一筆新的資料。
在 fetch() api中,會將資料放在body後傳送給後端。
1 | await fetch(url, { |
PUT methods
送出 PUT 方法後,有兩種情況
- 若後端已經有此筆資料,就更新該筆資料
- 若後端沒有這筆資料,建立該筆資料
POST 和 PUT 的差別是,POST只建立資料, PUT 則是更新或建立資料。
另一個差異是,PUT 對後端是沒有重複影響的,當我送第一次PUT給後端時,後端更新該筆資料,當我送同樣的PUT到後端時,沒有影響。
POST 則是你送幾次請求,就在後端建立幾個新的資料。
1 | await fetch(url, { |
PATCH method
Patch 和 put 不同的是, put 是更新整筆資料, Patch 則是更新部分資料。
Patch 沒有 PUT 那麼常用,很多後端 server 選擇使用 put 即使你只要更新部分資料。
DELETE method
DELETE 方法用來刪除指定的資料
1 | const url = 'https://api.boot.dev/v1/courses_rest_api/learn-http/locations/52fdfc07-2182-454f-963f-5f0f9a621d72' |