Skip to content
本站總訪問量
本站訪客數 人次

HTTP 請求方法

什麼是fetch()的文章中學到了怎麼打api,在fetch()預設是使用GET方法

除了 GET 方法,HTTP 還有其他多種請求方法,每種方法都有其特定的用途和行為。以下是一些常見的 HTTP 請求方法:

1. POST

  • 用途:用於向伺服器提交數據,通常用於創建新的資源。
  • 特性:不安全(unsafe),非幂等(non-idempotent),這意味著多次發送相同的請求會創建多個相同的資源。

2. PUT

  • 用途:用於更新或替換指定資源的全部內容。
  • 特性:不安全(unsafe),但幂等(idempotent),這表示多次發送相同的請求會產生相同的結果。

3. DELETE

  • 用途:用於刪除指定的資源。
  • 特性:不安全(unsafe),但幂等(idempotent),這意味著多次刪除同一資源不會影響結果。

4. PATCH

  • 用途:用於對資源進行部分更新,而不是替換整個資源。
  • 特性:不安全(unsafe),非幂等(non-idempotent),這表示對同一資源進行多次相同的請求可能會產生不同的結果。

5. HEAD

  • 用途:類似於 GET 請求,但伺服器只返回響應頭,不返回響應體。這通常用於獲取元數據,如檔案大小。
  • 特性:安全(safe)且幂等(idempotent)。

6. OPTIONS

  • 用途:用於查詢伺服器支持哪些 HTTP 方法,通常用於 CORS 請求中。
  • 特性:安全(safe)且幂等(idempotent)。

7. CONNECT

  • 用途:用於建立到伺服器的隧道,通常用於 SSL 加密連接。
  • 特性:不安全(unsafe),非幂等(non-idempotent)。

8. TRACE

  • 用途:用於回顯伺服器收到的請求,主要用於診斷和調試。
  • 特性:安全(safe)且幂等(idempotent)。

這些方法讓客戶端能夠以標準化和可預測的方式對 API 的資源執行 CRUD 操作(創建、讀取、更新和刪除)。每種方法都有其適合使用的場景,開發者可以根據需求選擇合適的方法來進行 HTTP 請求。

要開始使用 fetch() 方法,你需要了解如何發送 HTTP 請求,並且可以使用不同的請求方法來獲取或傳送資料。以下是如何使用 fetch() 的基本介紹,以及兩個範例,展示如何使用 GETPOST 方法。

HTTP 狀態碼

1xx:信息響應

  • 100 Continue:這是一個臨時響應,表示到目前為止的所有內容都是可行的,客戶端應該繼續請求。
  • 101 Switching Protocols:表示伺服器正在切換到客戶端所要求的不同協議。

2xx:成功響應

  • 200 OK:請求成功,伺服器返回所請求的數據。
  • 201 Created:成功創建新資源,通常用於 POST 請求。
  • 202 Accepted:請求已被接受,但尚未處理,通常用於異步操作。
  • 204 No Content:請求成功,但沒有返回內容,通常用於 DELETE 請求。

3xx:重定向

  • 301 Moved Permanently:請求的資源已永久移動到新位置,客戶端應使用新位置進行後續請求。
  • 302 Found:請求的資源臨時移動到其他位置。
  • 304 Not Modified:自上次請求以來,所請求的資源沒有改變,客戶端可以使用快取的版本。

4xx:客戶端錯誤

  • 400 Bad Request:請求無效,伺服器無法理解。
  • 401 Unauthorized:用戶未經授權,需要身份驗證。
  • 403 Forbidden:伺服器理解請求,但拒絕執行。
  • 404 Not Found:所請求的資源不存在。
  • 422 Unprocessable Entity:當創建或更新對象時發生驗證錯誤。

5xx:伺服器錯誤

  • 500 Internal Server Error:伺服器發生錯誤,無法完成請求。
  • 502 Bad Gateway:伺服器作為網關或代理時收到無效響應。
  • 503 Service Unavailable:伺服器目前無法處理請求,通常是因為過載或維護。

基本用法

fetch() 是一個全域函數,用來發送 HTTP 請求。它的基本語法如下:

javascript
fetch(url, options)
  • url:要請求的資源網址。
  • options(可選):一個物件,用來設定請求的各種參數,例如方法(method)、標頭(headers)、請求體(body)等。

如果不提供 options,默認的請求方法是 GET

使用 GET 方法

這是一個使用 GET 方法的範例,從一個 API 獲取資料並顯示在網頁上:

html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>GET 請求範例</title>
</head>
<body>
    <h1>魔法咒語列表</h1>
    <table border="1">
        <tr>
            <td>ID</td>
            <td>Name</td>
            <td>Description</td>
        </tr>
    </table>

    <script>
        fetch("https://hp-api.onrender.com/api/spells") // 發送 GET 請求
            .then((response) => response.json()) // 將回應轉換為 JSON 格式
            .then((data) => {
                data.forEach((spell) => {
                    let table = document.querySelector("table");
                    let row = table.insertRow();
                    let cell1 = row.insertCell(0);
                    let cell2 = row.insertCell(1);
                    let cell3 = row.insertCell(2);
                    cell1.innerHTML = spell.id; // 填入 ID
                    cell2.innerHTML = spell.name; // 填入名稱
                    cell3.innerHTML = spell.description; // 填入描述
                });
            })
            .catch((error) => console.error('發生錯誤:', error)); // 錯誤處理
    </script>
</body>
</html>

使用 POST 方法

這是一個使用 POST 方法的範例,將資料發送到伺服器:

html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>POST 請求範例</title>
</head>
<body>
    <h1>發送資料到伺服器</h1>

    <script>
        const data = {
            name: "John Doe",
            age: 30
        };

        fetch("https://example.com/api/users", { // 發送 POST 請求
            method: "POST", // 設定請求方法為 POST
            headers: {
                "Content-Type": "application/json" // 設定請求標頭為 JSON 格式
            },
            body: JSON.stringify(data) // 將資料轉換為 JSON 字串
        })
        .then((response) => {
            if (!response.ok) {
                throw new Error('網路錯誤');
            }
            return response.json(); // 將回應轉換為 JSON 格式
        })
        .then((result) => console.log('成功:', result)) // 成功處理回應
        .catch((error) => console.error('發生錯誤:', error)); // 錯誤處理
    </script>
</body>
</html>

總結

使用 fetch() 方法可以輕鬆地發送 HTTP 請求。你可以根據需要選擇不同的請求方法(如 GETPOST),並透過選項來設定請求的各種參數。這使得與伺服器進行互動變得更加簡單和直觀。

Contributors

The avatar of contributor named as lucashsu95 lucashsu95

Changelog