iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0
佛心分享-IT 人自學之術

Python學習馬拉松:30天挑戰系列 第 16

Day16. JSON 與 REST 架構(JSON and the REST Architecture)

  • 分享至 

  • xImage
  •  
  • JSON(JavaScript Object Notation):
    -是一種輕量級的數據交換格式,主要用於數據在不同系統之間的傳輸。它的結構是通過「鍵-值對」表示的,並且數據通常以「列表」和「字典」的形式嵌套表示。
    -舉例:
    https://ithelp.ithome.com.tw/upload/images/20240930/20168364sxzKR86ff1.png

-程式碼說明:

  1. import json:
    ◆ 這行代碼導入了 Python 內建的 json 模組,這個模組提供了處理 JSON 格式數據的函式。
  2. data 變數:
    ◆ 這個變數儲存了一個 JSON 格式的字串。JSON (JavaScript Object Notation) 是一種輕量級的數據交換格式,常用於儲存和傳輸數據。
    ◆ JSON 數據以鍵值對的形式組織,類似於 Python 的字典。在這個例子中,data 表示一個人的資訊,包含了名字、電話號碼和電子郵件。
  3. json.loads(data):
    ◆ json.loads() 函式將 JSON 格式的字串轉換成 Python 的字典對象。這使得我們可以方便地存取和操作 JSON 數據中的各個元素。
  4. info 變數:
    ◆ info 變數儲存了將 JSON 字串解析後的 Python 字典。
  5. print 語句:
    ◆ 這兩行 print 語句用來輸出字典中的特定值:
    ■ print('Name:',info["name"]):輸出人的名字。
    ■ print('Hide:',info["email"]["hide"]):輸出電子郵件的隱藏狀態。
  • JSON 的基本結構:
    -物件: 由花括號 {} 包圍,包含多個鍵值對。
    -陣列: 由方括號 [] 包圍,包含一個有序的值集合。
    -值: 可以是數字、字串、布林值、null、物件或陣列。

  • 服務導向架構 (Service Oriented Approach,SOA):
    -是一種將應用程式拆分成獨立服務的設計模式,這些服務可以分散在網路的不同位置。
    -SOA 的好處在於,它讓系統更具彈性、可維護性,也更容易擴展。
    -服務之間透過介面溝通: ,一個服務想要使用另一個服務的功能,需要透過門戶(API)來溝通,且要遵守對方提供的介面規則。
    -圖例:
    https://ithelp.ithome.com.tw/upload/images/20240930/2016836432ZGqkUu5a.png
    -圖片說明:
    ◆ 應用程式 (Application):這代表一個完整的應用程式,就像是一間公司。
    ◆ 服務 (Service):這些是獨立的小單位,提供特定的功能,例如信用卡交易、飯店訂房等。
    ◆ API (Application Programming Interface):
    ■ 這是服務提供的介面,就像是服務的大門。應用程式要使用服務的功能,就必須透過這個門戶。
    ■ 不同的軟體系統之間也需要一套共同的規則來進行溝通。API 就是這套規則,它定義了兩個系統之間如何交換數據和指令。

  • 到處都有API:
    -許多組織會公開他們的 API,並提供付費或免費的存取方式。這些 API 可以提供各種服務,例如地圖、天氣、金融數據等等。
    ◆ 以 OpenStreetMap 為例: 一種基於 OpenStreetMap 數據的地理編碼 API。地理編碼 API 可以將地址轉換為經緯度座標,或反之。
    -要使用大多數 API,都需要註冊一個帳號。
    -通常 API 提供商會給予用戶一定的免費請求額度。
    -如果超出免費額度,就需要付費才能繼續使用。

以上圖片皆出自於Coursera上的課程「Python for Everybody」來自University of Michigan。


上一篇
Day15. 網路服務和XML(Web Services and XML)
下一篇
Day17. 物件導向Object Oriented Python
系列文
Python學習馬拉松:30天挑戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言