問題說明

在練習Notion API的時候,發現提出POST的時候回傳的結果並沒有根據我使用的body去做出反應

解決方式

取消內建的Content-Type: text/plain,換成Content-Type: application/json

ChatGPT這麼說

application/json 和 text/plain 有什麼差異?

“application/json” 和 “text/plain” 都是 MIME types,它們被用於指示 HTTP 請求和響應所包含的內容格式。

“application/json” 表示所包含的內容是 JSON 格式,它是一種結構化的資料格式,常用於 Web 應用程序與後端系統之間的資料交換。

“text/plain” 表示所包含的內容是純文本格式,這種格式的文本一般不包含任何格式信息,只包含純文本數據。

因此,如果您正在向 Web 應用程序發送結構化的資料,則應使用 “application/json” MIME 類型;如果您正在發送純文本數據,則應使用 “text/plain” MIME 類型。

body的種類差異?

  • “raw”:這種格式代表原始數據,它沒有任何格式。它可以是任意格式的文本或二進制數據,例如 JSON、XML 或其他格式。
  • “none”:這表示請求不包含任何正文。
  • “form-data”:這種格式用於發送普通文本數據(例如表單數據),其中包含鍵值對的數據。它通常用於 HTML 表單的資料提交。
  • “binary”:這種格式代表二進制數據,例如圖像、音頻或視頻文件等。
  • “GraphQL”:這種格式代表使用 GraphQL 來發送查詢和變更數據的格式。 GraphQL 是一种声明式的 API 查询语言,可以同时进行多个数据操作。

因此,在選擇 HTTP 請求的正文格式時,您需要根据您要發送的數據類型進行選擇。例如,如果您要發送二進制數據,則應使用 “binary” 格式;如果您要發送表單數據,則應使用 “form-data” 格式。

Body的raw json,是需要和header的application/json 結合使用的嗎?

是的,通常在使用 “raw” 格式的正文時,需要與 “application/json” 格式的頭部結合使用。

當向 Web 服務器發送原始數據(例如 JSON 格式的數據)時,您需要將頭部設置為 “application/json”,以指示正文的格式。這樣,服務器就知道如何正確解釋正文中的數據。

POST /api/data HTTP/1.1
Content-Type: application/json

{
   "key1": "value1",
   "key2": "value2"
}

在此示例中,頭部 “Content-Type” 被設置為 “application/json”,而正文包含 JSON 格式的數據。