iT邦幫忙

2024 iThome 鐵人賽

DAY 4
0

API 的資料格式通常分為以下幾種類型:

  1. JSON (JavaScript Object Notation):
    最常見的 API 資料格式,結構清晰且易於讀取和編寫。
    https://ithelp.ithome.com.tw/upload/images/20240916/20153147xAjq8gN9ko.png
    特點:輕量、易於解析,幾乎所有語言都能處理 JSON 格式。
  2. XML (eXtensible Markup Language):
    以前比較流行的格式,現在多用於與舊系統或特定需求的場合。
    https://ithelp.ithome.com.tw/upload/images/20240916/20153147wH1bCt3Eg2.png
    特點:結構嚴謹,但相較於 JSON,XML 資料量較大,處理起來稍複雜。
  3. Form Data (表單資料):
    一般用於 HTTP POST 請求中,特別是在上傳文件或模擬表單提交時。
    https://ithelp.ithome.com.tw/upload/images/20240916/20153147PDxC53V6QO.png
    4.** GraphQL:**
    一種查詢語言,用於針對 API 進行靈活的數據查詢。與 REST API 不同,GraphQL 允許客戶端指定所需的資料結構和內容。

5.** Protobuf (Protocol Buffers):**
Google 開發的一種序列化資料格式,主要用於處理大規模數據傳輸,適合需要高效傳輸和存儲的應用場景。

特點:比 JSON 和 XML 更加高效,但不如它們易讀。

今天會將重點放在Json及xml!


JSON

  1. 資料結構
  • 物件 (Object):由鍵值對組成,類似 JavaScript 的物件。
  • 陣列 (Array):有序的數據集合。
  • 基本類型:字串(String)、數字(Number)、布林(Boolean)、空值(Null)。
  1. 語法格式
  • 物件 使用 {} 包裹。
  • 陣列 使用 [] 包裹。
  • 鍵名是字串,並且必須用 雙引號 包圍。
  • 鍵值可以是任何有效的 JSON 類型(字串、數字、物件、陣列、布林、空值)。
  1. 常見的 JSON 格式範例
    物件格式:
    https://ithelp.ithome.com.tw/upload/images/20240916/20153147vhRLuKquWb.png
    陣列格式:
    https://ithelp.ithome.com.tw/upload/images/20240916/20153147uVKsGSLLHm.png
    嵌套結構:
    https://ithelp.ithome.com.tw/upload/images/20240916/20153147bRWiOLcloD.png

在網頁或伺服器應用中,JSON 通常透過 API 來進行資料的傳輸與接收。

透過 JavaScript 呼叫 API (使用 Fetch)
GET請求:
https://ithelp.ithome.com.tw/upload/images/20240916/20153147aJtyM84daz.png
這會向 https://api.example.com/users/123 發送一個 GET 請求,並將伺服器返回的 JSON 資料輸出到控制台。

POST請求:
https://ithelp.ithome.com.tw/upload/images/20240916/20153147G4eOy33xex.png
這段程式會向 https://api.example.com/users 發送一個 POST 請求,並在請求的主體中附加一個 JSON 物件,通常用於創建新的資料。

JSON 常見問題與注意事項

  1. 格式嚴格:鍵名必須是用雙引號包裹的字串;不能使用單引號或沒有引號。
  • 錯誤:{ name: "Alice" }
  • 正確:{ "name": "Alice" }
  1. 數字無需引號:數字應直接書寫,不能加引號。
  • 錯誤:{ "age": "25" }
  • 正確:{ "age": 25 }
  1. 值為 null:null 代表空值,這在 API 回傳資料中很常見,表示沒有資料。
  • 範例:{ "middleName": null }
  1. 布林值小寫:布林值必須是小寫的 true 或 false。
  • 錯誤:{ "isActive": True }
  • 正確:{ "isActive": true }
  1. 陣列中可以混合不同類型的數據:
    https://ithelp.ithome.com.tw/upload/images/20240916/20153147KonKstLt0i.png

XML
一種標記語言,用來存儲和傳輸資料,具有可讀性高、結構化的優點。與 JSON一樣,XML常用於在不同的系統間交換資料,特別是在早期的網絡服務中,XML是主要的資料格式。

  1. 基本語法:
  • 元素 (Element):XML中的核心單位,通常由一對開始標籤和結束標籤包圍,中間包含內容。
    例:
    https://ithelp.ithome.com.tw/upload/images/20240916/201531476ekSRgTAOF.png
  • 屬性 (Attribute):元素可以包含屬性,屬性是附加在開始標籤中的鍵值對,用於提供額外資訊。
    例:
    https://ithelp.ithome.com.tw/upload/images/20240916/20153147M4ETJJFYkF.png
  • 層次結構:XML支持嵌套的結構,元素可以包含其他元素,這使得資料可以被表示為樹狀結構。
    例:
    https://ithelp.ithome.com.tw/upload/images/20240916/20153147FzZlRafMqj.png
  • XML宣告:XML文件通常以XML宣告開頭,指定XML版本和編碼。
    例:
    https://ithelp.ithome.com.tw/upload/images/20240916/20153147y7ywgtUqh8.png
  • 空元素:如果元素沒有內容,可以使用自閉合的標籤來表示。
    例:
    https://ithelp.ithome.com.tw/upload/images/20240916/201531479jLddFWNyH.png
  • 評論 (Comment):XML中的評論使用 包裹,這部分內容不會被解析器讀取。
    例:
    https://ithelp.ithome.com.tw/upload/images/20240916/20153147VzDC4Put8N.png
  • CDATA 區塊:CDATA 區塊中的內容不會被解析器作為 XML 代碼解析,常用於嵌入像是 JavaScript 或 HTML 代碼。
    例:
    https://ithelp.ithome.com.tw/upload/images/20240916/201531479J8OO5P0bX.png

XML與JSON的比較
https://ithelp.ithome.com.tw/upload/images/20240916/201531479IcwHKnU0a.png


上一篇
DAY3.如何發送 API 請求?
下一篇
DAY5.API 安全威脅及保護 API 的有效策略
系列文
API 101:從基礎認識到應用的全方位指南-Swagger/Postman14
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言