後端框架與API 開發(6-1) - Web API

閱讀時間約 4 分鐘

※ 什麼是Web API

API 就是後端開出來讓前端來用的介面,讓前端與後端可以溝通。

API流程:

  • 終端使用者用任何一種裝置進入瀏覽器。
  • 瀏覽器透過 API 向後端發出請求,請求查詢或修改資料。
  • 後端透過 API 收到前端的請求後,取得資料並回應給前端。
  • 前端渲染畫面,終端使用者看到頁面。


raw-image


※ API 溝通文件:

API 文件的主要目標是使開發人員能夠有效地使用 API,並為他們提供必要的訊息,以實現應用程序的相互操作性和功能。

 API 文件可能包含的內容如下:

  1. API 描述:對API的簡要概述,包括其功能、用途和重要性。
  2. 路由和請求:詳細描述 API 的各個路由以及可用的HTTP請求方法(如GET、POST、PUT、DELETE等)。這部分通常會包括路由的 URL 和所需的請求參數。
  3. 參數:對請求參數的描述,包括每個參數的名稱、類型、是否必填以及範例。
  4. 回應:對 API 回應的描述,包括成功回應的格式和可能的錯誤回應。這通常包括 HTTP 狀態碼和相關的錯誤消息。
  5. 身份驗證和授權:如果API需要身份驗證或授權,則文件通常會提供相關信息,例如需要 API 金鑰、token 或 OAuth 流程。
  6. 版本控制:如果 API 具有多個版本,則文件通常會指示如何指定所需的 API 版本。

※ API 溝通文件的範例,「登入功能」:

raw-image

這條規格講定了後端的輸出格式,以及前端必須傳入的參數。在講定文件之後,後端去開發 API 伺服器,按規格回傳資料,而前端則可以根據文件裡定義的 JSON 格式,自行模擬資料來開發畫面。

※ API 溝通文件常見格式:JSON

  • JSON: JavaScript Object Notation 的縮寫,它參考了 JavaScript 中物件結構的表示方式。
  • JSON的優點較為輕量、易於閱讀,幾乎所有網頁開發相關的語言都有解析 JSON 資料的函式庫。
  • JSON 的語法建立在 JavaScript 對於 Array 和 Object 的表示方式,資料結構中通常也會運用 array 和 object 的嵌套關係,例如:
  1. 外層是 array,裡頭包含其他 object
  2. 外層是 object,裡頭還有其他 object
  • JSON 還可以處理字串 (String)、數字、布林值 (Booleans) 以及空值 (null)。

※ 什麼是「後端負責回傳資料」?

前後分離的分工模式,主要差異在於,回傳 JSON v.s. 回傳 view template。後端的主要工作就是處理請求並回傳資料,而這些資料通常是以 JSON 格式回傳的。這種方式讓前端可以專注於處理使用者介面和使用者體驗,而後端則專注於資料處理和商業邏輯。這種分工模式提高了開發效率並使應用程式更易於維護。

※ 設計 Web API 

API 的設計中一般來說可以分為兩種切入點:使用者角度,以及需求角度。兩種角度在業界都很常被使用、有各自的優劣勢。

  • 從需求角度看 API:等同於從單一頁面來思考,比較像 MVC 開發所做的事情。

以下圖為例,當我們想取得某個頁面,會透過一支 API 直接取得所有頁面資料;同理,在另一個頁面,也有一支 API 取得所有資料。

這種設計方式隱含的意義,就是將資料組裝的任務交給後端工程師。前端工程師會開出頁面的資料需求,後端依照需求回傳資料,填充畫面上需要的資料。

raw-image
  • 從使用角度看 API:後端工程師會將現有的資料開成 API 選項,前端需要使用時就自己拼湊。

這種設計方式隱含的意義,是將組裝資料的責任放到前端身上。一開始後端工程師會從資料庫確定現有的資料,再針對資料作出增刪改查的 API,前端再拿這些 API 拼湊出頁面。

以下圖為例:

  1. 一個元件取一支 API,如元件 1 對應一支 API。
  2. 也可能一個元件取多支 API,像元件 2 需要拿兩支 API 資料。
  3. 有些元件會重複出現,像元件 2 在頁面 1、頁面 2、頁面 3 皆有出現,即會重複使用 API 3 與 API 4。
raw-image

※ RESTful 風格

先提供 API 再組裝,API 設計就會跟 RESTful 風格很有關。API 的設計中命名是很關鍵的事。好的命名會讓你的 API 更易於上手與使用,而 RESTful 風格的好處就在具備非常高的可讀性,例如,我們看到 get 就知道這支 API 要拿資料,不需要看文件。

raw-image


    全端網頁開發專業知識分享
    留言0
    查看全部
    發表第一個留言支持創作者!
    ※ 原本狀態:伺服器渲染 這是 MVC 架構下的 request / response 示意圖,在這張圖呈現的架構裡,畫面和資料都由同一個架構處理。 伺服器渲染流程: 瀏覽器針對特定網址送出請求。 路由器解析請求後,轉接給對應的 controller。 controller 按照要求,透過
    ※ 什麼是Middleware (中介層)? Middleware 一般翻譯作「中間件」或是「中介軟體」,其實 Express 應用程式就是由一連串的 middleware 串連而成: 從 request 進來到 response 回去會經過一系列的流程。 這個流程會按照路由清單由上而下執行。
    ※ Params是什麼? 在網頁開發中,params代表的是參數(Parameters)。當你在路由(Route)中定義了一個或多個變數時,這些變數的值就會被存儲在 params 對象中。所以,params 就是用來存儲路由參數的地方,這些參數可以在處理請求時使用。 ※ Params的兩個功能:
    ※ 什麼是路由? 當我們說「路由」時,可能是在談論路由器(實體設備),也可能是在談論路由(選擇路徑的過程),或者是在談論路徑(資料封包的傳輸路徑)。 路由器 (Router):這是一種實體設備,負責將資料封包 (Packet) 從一個網路傳送到另一個網路。它的工作方式類似於交通指揮,確保資料封包
    ※ 什麼是 Helper? Helper 通常指的是樣板引擎裡的邏輯工具。當我們想做的事情超越內建功能時,就可以自訂 helper。 ※ Handlebar helper的用處 說明:Handlebars helper 是一種自定義函數,可以在 Handlebars 模板中執行邏輯操作。這些函
    ※ 用 faker 套件產生假資料步驟 安裝 faker套件:快速生成假資料(人名、地名、時間)。 npm install [email protected] 引入 faker 套件: const faker = require('faker') 建立data資料夾來生成假資料。創建一個名為 gene
    ※ 原本狀態:伺服器渲染 這是 MVC 架構下的 request / response 示意圖,在這張圖呈現的架構裡,畫面和資料都由同一個架構處理。 伺服器渲染流程: 瀏覽器針對特定網址送出請求。 路由器解析請求後,轉接給對應的 controller。 controller 按照要求,透過
    ※ 什麼是Middleware (中介層)? Middleware 一般翻譯作「中間件」或是「中介軟體」,其實 Express 應用程式就是由一連串的 middleware 串連而成: 從 request 進來到 response 回去會經過一系列的流程。 這個流程會按照路由清單由上而下執行。
    ※ Params是什麼? 在網頁開發中,params代表的是參數(Parameters)。當你在路由(Route)中定義了一個或多個變數時,這些變數的值就會被存儲在 params 對象中。所以,params 就是用來存儲路由參數的地方,這些參數可以在處理請求時使用。 ※ Params的兩個功能:
    ※ 什麼是路由? 當我們說「路由」時,可能是在談論路由器(實體設備),也可能是在談論路由(選擇路徑的過程),或者是在談論路徑(資料封包的傳輸路徑)。 路由器 (Router):這是一種實體設備,負責將資料封包 (Packet) 從一個網路傳送到另一個網路。它的工作方式類似於交通指揮,確保資料封包
    ※ 什麼是 Helper? Helper 通常指的是樣板引擎裡的邏輯工具。當我們想做的事情超越內建功能時,就可以自訂 helper。 ※ Handlebar helper的用處 說明:Handlebars helper 是一種自定義函數,可以在 Handlebars 模板中執行邏輯操作。這些函
    ※ 用 faker 套件產生假資料步驟 安裝 faker套件:快速生成假資料(人名、地名、時間)。 npm install [email protected] 引入 faker 套件: const faker = require('faker') 建立data資料夾來生成假資料。創建一個名為 gene
    你可能也想看
    Thumbnail
    「設計不僅僅是外觀和感覺。設計是其運作的方式。」 — Steve Jobs 身為一個獨立文案,許多人會以為我們的生活只需要面對電腦,從無到有,用精巧的文字填滿空白的螢幕,呈現心目中獨具風格的作品。 ——有的時候可以如此,但其實這是我們夢寐以求的偶發日常。 更多的時候,白天的工作時間總被各種繁雜
    Thumbnail
    台股、美股近期明顯回檔,市場敘事發生改變,壞消息一樁接一樁出現,下一步該怎麼走呢?本文將探討近期的宏觀經濟事件,並分享個人的操作思考。
    Thumbnail
    在前一篇我們已經成功地建立簽核表單及簽核節點並關聯回請假表單,而本篇會接著介紹如何管理簽核節點狀態並同步更新簽核表單狀態。
    Thumbnail
    本文介紹瞭如何在後端系統開發時設計不同表單的簽核流程,包括請假表單和採購表單。以及如何動態生成簽核表單,並建立簽核節點。另外還介紹瞭如何利用繼承來簡化簽核流程的設定。
    Thumbnail
    ts-rest 可以實現從服務器到客戶端的全型別安全,可以有效降低前後端溝通血流成河的機率。(´,,•ω•,,)
    Thumbnail
    軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
    Thumbnail
    在軟體開發領域中,Backend 和 Frontend 是兩個常被提及的術語。許多同學常常問我,到底是 Backend 比較難還是 Frontend 比較容易?
    Thumbnail
    製作檔案後續流程 -->底片-->曬版-->印刷機---印刷 -->出版----------->印刷機---印刷 最先接觸的是底片機,那時照相機還是膠捲時代,而報紙與周刊要印刷前都是輸出成透明黑字圖底片,再經由曬版功序進入印刷機。 出片機 以下廠牌為當時最大宗(中譯名),西元年是我
    Thumbnail
    菜雞成長故事 寫這一篇主因也是因為身邊朋友陸陸續續想往軟體業發展,或是想動手做做小專案,故才成就了這一篇心路歷程,這邊會介紹我的背景、學習管道跟我如何選擇第一個程式語言作為敲門磚跟學習時間,希望能幫助還在努力中或是預計要轉職的各位有一個方向或是參考?(雖然我依然還是一個小菜雞,請鞭小力)
    Thumbnail
    #框架 #貝特森 #NLP #徐承庚 #心理學 #薩提爾 #後設模式 今天的影片內容,我們來聊聊你有沒有被框架效應綁架了你的判斷? 想想最近新聞瘋狂報導的白飯之亂,公說公有理,婆說婆有理 到底誰才是對的呢? 而框架效應深深影響著我們在判斷要買什麼東西、做什麼投資...等決策
    Thumbnail
    初學後端的人,可能對如何學習後端技術或語言會感到很困惑。 本篇文章提供了作者的幾種思路,幫助後端學員進行學習
    Thumbnail
    在工作室培訓難免會陷入低潮的原因,本篇文章分析了陷入低潮的原因,及提供預防及解決方法。
    Thumbnail
    「設計不僅僅是外觀和感覺。設計是其運作的方式。」 — Steve Jobs 身為一個獨立文案,許多人會以為我們的生活只需要面對電腦,從無到有,用精巧的文字填滿空白的螢幕,呈現心目中獨具風格的作品。 ——有的時候可以如此,但其實這是我們夢寐以求的偶發日常。 更多的時候,白天的工作時間總被各種繁雜
    Thumbnail
    台股、美股近期明顯回檔,市場敘事發生改變,壞消息一樁接一樁出現,下一步該怎麼走呢?本文將探討近期的宏觀經濟事件,並分享個人的操作思考。
    Thumbnail
    在前一篇我們已經成功地建立簽核表單及簽核節點並關聯回請假表單,而本篇會接著介紹如何管理簽核節點狀態並同步更新簽核表單狀態。
    Thumbnail
    本文介紹瞭如何在後端系統開發時設計不同表單的簽核流程,包括請假表單和採購表單。以及如何動態生成簽核表單,並建立簽核節點。另外還介紹瞭如何利用繼承來簡化簽核流程的設定。
    Thumbnail
    ts-rest 可以實現從服務器到客戶端的全型別安全,可以有效降低前後端溝通血流成河的機率。(´,,•ω•,,)
    Thumbnail
    軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
    Thumbnail
    在軟體開發領域中,Backend 和 Frontend 是兩個常被提及的術語。許多同學常常問我,到底是 Backend 比較難還是 Frontend 比較容易?
    Thumbnail
    製作檔案後續流程 -->底片-->曬版-->印刷機---印刷 -->出版----------->印刷機---印刷 最先接觸的是底片機,那時照相機還是膠捲時代,而報紙與周刊要印刷前都是輸出成透明黑字圖底片,再經由曬版功序進入印刷機。 出片機 以下廠牌為當時最大宗(中譯名),西元年是我
    Thumbnail
    菜雞成長故事 寫這一篇主因也是因為身邊朋友陸陸續續想往軟體業發展,或是想動手做做小專案,故才成就了這一篇心路歷程,這邊會介紹我的背景、學習管道跟我如何選擇第一個程式語言作為敲門磚跟學習時間,希望能幫助還在努力中或是預計要轉職的各位有一個方向或是參考?(雖然我依然還是一個小菜雞,請鞭小力)
    Thumbnail
    #框架 #貝特森 #NLP #徐承庚 #心理學 #薩提爾 #後設模式 今天的影片內容,我們來聊聊你有沒有被框架效應綁架了你的判斷? 想想最近新聞瘋狂報導的白飯之亂,公說公有理,婆說婆有理 到底誰才是對的呢? 而框架效應深深影響著我們在判斷要買什麼東西、做什麼投資...等決策
    Thumbnail
    初學後端的人,可能對如何學習後端技術或語言會感到很困惑。 本篇文章提供了作者的幾種思路,幫助後端學員進行學習
    Thumbnail
    在工作室培訓難免會陷入低潮的原因,本篇文章分析了陷入低潮的原因,及提供預防及解決方法。