Skip to content
ADP
API Design PrincipleBETA

[ADP-368] HTTP Expect

指引

  • 伺服器應(SHOULD)適當回應包含 Expect 標頭的請求。
  • 客戶端應(SHOULD)謹慎使用 Expect 標頭,以提高大型或關鍵請求的效率和可靠性。

其他標頭原則請參閱 ADP-129

範例

HTTP 請求和回應

http
POST /large-upload HTTP/1.1
Host: api.example.com
Content-Type: application/octet-stream
Content-Length: 1000000
Expect: 100-continue

[尚未發送請求主體]

伺服器回應:

http
HTTP/1.1 100 Continue

[客戶端現在可以發送請求主體]

OpenAPI 3.1.0 範例

yaml
openapi: 3.1.0
paths:
  /large-upload:
    post:
      summary: 上傳大型檔案
      consumes:
        - application/octet-stream
      headers:
        Expect:
          description: 用於大型上傳的 Expect 標頭
          schema:
            type: string
            enum:
              - 100-continue
      responses:
        '100':
          description: 繼續發送請求主體
        '417':
          description: 期望失敗

最佳實踐

  1. 對於大型負載上傳,使用 Expect 標頭以避免在伺服器可能拒絕請求時進行不必要的數據傳輸。
  2. 在使用 Expect 標頭時,在客戶端和伺服器端都實作適當的超時處理。
  3. 考慮將 Expect 標頭與其他標頭(如 Content-Length)結合使用,以提供伺服器更多決策資訊。

參考資料