如何部署web service?分步指南
本文將討論webservices、它們的優勢、web services的部署選項,以及它們與API的比較。
除此之外,您還將學習如何在不編寫任何自定義代碼的情況下,將電子商務web service部署到雲端!
Contents
關鍵要點
- 了解Web Services的角色:Web services是現代數位基礎設施的關鍵組成部分,提供了顯著的優勢,如互操作性、平台獨立性、可擴展性和安全性。
- 探索部署選項:部署web services可以通過多種方式進行,包括傳統托管、平台即服務(PaaS)、容器即服務(CaaS)和後端即服務(BaaS)。
- 部署Web Service到雲端的指導:本文提供了使用無代碼BaaS平台部署電子商務web service的全面指南。
什麼是Web Service?
Web service是通過互聯網提供的軟體,通常通過超文本傳輸協議(HTTP)。web service提供的數據是以標準格式,如XML、JSON、SOAP或YAML。
Web services用於機器對機器的通信,而不是直接由最終用戶消費。
例如,您的移動設備使用天氣web service來獲取天氣信息,然後以漂亮的格式顯示。
Web services有多種類型,如Representational State Transfer(REST)、GraphQL和gRPC。
典型的web service生命周期如下:
- web service在某個服務器的特定端口上監聽。
- 客戶端向該端口的web service發送請求。
- web service執行請求並返回響應。在處理響應之前,服務器還可以對請求進行身份驗證和授權。
- 客戶端處理響應。
Web services以其平台和語言獨立性、可重用性、可擴展性、靈活性和低耦合性著稱。如今,幾乎所有IT公司都在使用它們。
Web Service vs. API
Web service和API是相似的術語,但不應互換使用。
簡而言之,web service是僅通過互聯網提供的API。這意味著所有web services都是API,但並非所有API都是web services。
除了作為web services外,API還可以執行其他功能。例如,操作系統交互、本地應用程序通信和應用程序集成。
兩個非web service API的例子是Python文件系統API和JavaScript DOM API。
Web Service的優勢
Web services是現代數位基礎設施的基本方面,提供了許多優勢。讓我們來談談它們吧!
互操作性
web services的一個主要優勢是它們能夠促進不同系統和應用程序之間的互操作性。
通過遵循標準協議,如HTTP和XML,web services使不同軟體組件之間能夠無縫通信,無論底層技術堆棧如何。
平台獨立性
web services的另一個優點是它們完全平台獨立。它們可以用任何編程語言實現,並在任何操作系統上運行,包括Windows、Linux和MacOS。
如前一節所述,它們也可以在任何平台上被消費。
簡單且高效
web services易於理解和實現。大多數情況下,它們甚至沒有自己的狀態。相反,它們使用數據庫或利用其他軟體組件。
它們提供了一種簡單的方法來通過網絡訪問功能。這種簡單性有助於互動的一致性,使不同平台和技術之間更容易理解和使用這些服務。
可擴展性
web services具有高度的可擴展性。它們可以通過垂直擴展(即向服務器節點添加額外資源)或水平擴展(即生成額外的服務器節點)來適應任何流量。
這可以幫助您顯著降低成本,確保計算資源不被浪費。
可重用性
web services的最佳之處在於它們具有高度的可重用性。與其將相同的代碼集成到多個應用程序中,不如所有應用程序都利用單一的web service實例。
可重用性導致更小且更易於維護的代碼庫、更好的集中化,並且允許您節省資源。
安全性
web services可以利用身份驗證、授權、加密和其他安全措施。大多數web services使用SSL/TSL加密來保護。
所有這些確保了機密性(確保只有發件人和接收者可以讀取消息)和完整性(消息在傳輸過程中不被修改)。
Web Service的部署選項
web services可以自我托管或部署到雲端。部署web services的最受歡迎的雲選項包括:
- 平台即服務(PaaS)
- 容器即服務(CaaS)
- 後端即服務(BaaS)
每種雲模型都有其優缺點,在部署項目時應該考慮。最重要的因素是易用性、預算、性能和功能。
傳統托管
傳統托管是托管網站和應用程序的傳統方法。服務器可以自我托管或由托管公司提供。
使用傳統托管,您通常按月或按年租用服務器空間。
傳統托管的主要特點包括:
- 服務器空間——根據您的應用需求提供各種服務器空間計劃
- 網站管理工具——用戶友好的網站管理工具,例如cPanel
- 電子郵件托管——允許您將域名與電子郵件托管服務相關聯的電子郵件托管服務
- FTP訪問——可以通過FTP或安全FTP(SFTP)訪問服務器文件
傳統托管的一個主要優點是其經濟實惠,特別適合小型網站和企業。
然而,與基於雲的解決方案相比,它缺乏可擴展性和靈活性。傳統托管的設置也更加困難。
平台即服務(PaaS)
平台即服務(PaaS)使客戶能夠在雲環境中創建、管理和分發應用程序。
此外,PaaS公司提供各種預構建的應用程序創建、定制和測試工具。
與IaaS相比,PaaS更易於使用,並且對系統管理的經驗要求較低。
此外,您可以受益於負載均衡器、托管數據庫和自動備份。與IaaS相比,PaaS的自由和控制較少,並且存在更高的供應商鎖定風險。
容器即服務(CaaS)
容器即服務(CaaS)是另一種流行的雲計算模型。CaaS使得開發、運行、部署和維護容器化軟體變得簡單。它經常與Docker和Docker Compose結合使用。
大多數CaaS平台提供:
- Docker Engine
- 容器註冊表
- 擴展能力
容器化軟體的主要優勢是它可以部署在任何地方。沒有供應商鎖定,這意味著您可以自由地從一個雲提供商切換到另一個。這對於web services特別有用。
後端即服務(BaaS)
後端即服務(BaaS)是一種雲計算模型,負責您的基礎設施並自動化開發的後端部分。
此外,它提供實時數據庫、文件存儲、社交媒體集成、電子郵件和推送通知等功能。
因此,開發人員可以專注於創建前端,而不必擔心基礎設施和後端。
前端通常使用BaaS供應商的專有API和SDK構建。通過使用BaaS,您可以簡化代碼庫並使其更易於維護。
BaaS提供了IaaS和PaaS的所有優點,同時提供了一個後端抽象層。使用BaaS,團隊可以縮短上市時間,並在工程和人力方面節省資金。
如何部署Web Service?
本文的這一部分將提供一個逐步指南,說明如何將web service部署到Back4app平台。我們將使用Back4app的無代碼BaaS解決方案。
如果您對自定義代碼解決方案感興趣,請查看以下文章:
- 將Flask Web Service部署到Back4app Containers
- 將Node.js Web Service部署到Back4app Containers
- 將PHP Web Service部署到Back4app Containers
- 將FastAPI Web Service部署到Back4app Containers
什麼是Back4app?
Back4app是最受歡迎的後端即服務(BaaS)解決方案之一。
使用它,您將能夠顯著加快開發過程,並專注於應用程序的基本方面——如業務邏輯和前端,而Back4app將處理其餘部分。
Back4app提供無代碼和自定義代碼部署。它易於使用,幾乎沒有學習曲線。它適合初學者以及更有經驗的開發人員。
Back4app的優點是它根據您的數據庫類自動生成RESTful和GraphQL API。
此外,它還為幾乎所有流行的編程語言或框架提供SDK,如React、Android、iOS等!
Back4app核心功能
- 類似電子表格的數據庫
- 用戶管理與身份驗證
- 自動API生成
- 雲端代碼功能與調度
- 實時數據
要按照本文操作,您需要一個免費的Back4app帳戶。如果您還沒有,您可以創建一個。
項目介紹
在整篇文章中,我們將構建一個簡單的電子商務web API。
該API將提供產品、產品類別和購買管理功能。它將允許我們對每個數據庫類執行創建、讀取、更新和刪除(CRUD)操作。
除此之外,我們將使用Cloud Code來實現自定義功能,用於計算電子商務統計數據,如總銷售額和最受歡迎的產品。
最後,我們將使用內置的Back4app REST和GraphQL控制台來測試API。
創建應用
要使用Back4app,您首先需要創建一個應用。為此,請使用您的Back4app帳戶進行身份驗證,然後在應用儀表板上點擊“Build new app”。
Back4app平台允許您部署兩種類型的應用:
- 後端即服務(BaaS)
- 容器即服務(CaaS)
這兩種雲計算模型都允許您部署web services。
主要區別在於,BaaS是一個完備的後端,而CaaS則使您能夠部署容器化的web services。
換句話說,BaaS主要是無代碼解決方案,而CaaS則是自定義代碼解決方案。
我們將選擇後端即服務(BaaS)。
在創建Back4app應用時,您可以選擇NoSQL或SQL數據庫。對於我們的使用案例,這並不重要,因此我們將選擇NoSQL。
給您的應用一個好名字,然後點擊“Create”。
等待Back4app處理所有事項,包括數據庫、應用層、擴展、設置用戶管理等。大約需要2分鐘。
完成後,您將被重定向到您的數據庫視圖。
設計數據庫
繼續,讓我們處理數據庫。
默認情況下,Back4app應用帶有_Role
和_User
數據庫類。這兩個類用於用戶管理和身份驗證。
這些主題超出了本教程的範疇,但您可以查看我們的其他文章來了解相關內容。
要創建我們的電子商務web API,我們將創建以下數據庫結構:
我們將首先創建ProductCategory
類。
在側邊欄點擊“Add Class”以創建一個新的數據庫類。命名為“ProductCategory”,啟用“Public Read and Write”,然後點擊“Create class & add columns”。
為其添加以下列:
+-----------------------------+-------------+---------------+----------+
| 類型 | 名稱 | 默認值 | 是否必填 |
+-----------------------------+-------------+---------------+----------+
| String | name | <留空> | 是 |
+-----------------------------+-------------+---------------+----------+
| String | description | <留空> | 否 |
+-----------------------------+-------------+---------------+----------+
接下來,按照相同的步驟創建Product
類:
+-----------------------------+-------------+---------------+----------+
| 類型 | 名稱 | 默認值 | 是否必填 |
+-----------------------------+-------------+---------------+----------+
| String | name | <留空> | 是 |
+-----------------------------+-------------+---------------+----------+
| String | description | <留空> | 否 |
+-----------------------------+-------------+---------------+----------+
| Relation -> ProductCategory | categories | 是 | 是 |
+-----------------------------+-------------+---------------+----------+
| Number | price | 0.0 | 是 |
+-----------------------------+-------------+---------------+----------+
| Boolean | inStock | 是 | 是 |
+-----------------------------+-------------+---------------+----------+
最後,處理Purchase
類:
+-----------------------------+-------------+---------------+----------+
| 類型 | 名稱 | 默認值 | 是否必填 |
+-----------------------------+-------------+---------------+----------+
| Pointer -> Product | product | <留空> | 是 |
+-----------------------------+-------------+---------------+----------+
| Number | quantity | 1 | 是 |
+-----------------------------+-------------+---------------+----------+
太棒了,您已成功創建數據庫結構。
如您所見,Pointer
數據類型處理1:n
(一對多)關係,而Relation
數據類型處理n:m
(多對多)關係。
最後一件事是向數據庫中填充一些產品類別、產品和購買。這將允許我們稍後測試web service,以確保一切按預期工作。
要填充數據庫,您可以:
- 自己創建一些產品類別、產品和購買
- 從GitHub導入這些數據庫導出(“More > Import > Class Data”)
Web Service的使用
要連接到web service,Back4app允許多種方法:
- 自動生成的RESTful API
- 自動生成的GraphQL API
- Parse SDK
讓我們來看看每一種方法!
REST API
Representational state transfer(REST)是一種基於HTTP的協議,利用HTTP方法,如OPTIONS
、GET
、POST
、DELETE
等。
如今您交互的大多數API都是基於REST的。它支持多種數據格式,但JSON是最常用的。
REST是一種有效的、高度可擴展的、平台獨立的協議。它可以與任何編程語言或框架一起使用。
其主要缺點是數據過度獲取或不足獲取、沒有實時訂閱以及沒有API版本控制系統。
要測試REST API,選擇“API > Console > REST”並執行以下查詢:
此查詢應返回以下響應:
了解更多信息,請查看如何構建REST API?
GraphQL API
GraphQL是一種服務器端運行時和查詢語言,用於創建應用程序編程接口(APIs)。
GraphQL允許客戶端從API請求特定數據,而不是依賴後端提供預定義的數據集。
其優點包括靈活性、可維護性和GraphQL擴展。另一方面,缺點是複雜性、較陡的學習曲線和缺乏標準化。
要測試GraphQL API,選擇“API > Console > GraphQL”並執行以下查詢:
了解更多信息,請查看如何構建GraphQL API?
Parse SDK
如果您的前端是用Parse SDK本地支持的編程語言或框架構建的,Parse SDK是推薦的方法。
這些包括React Native、Flutter、Android、iOS、JavaScript、IONIC和Xamarin。
Parse軟體開發工具包(SDK)提供數據檢索、操作、用戶身份驗證、實時數據、Cloud Code功能等的類和函數。
JavaScript中的數據檢索代碼示例如下:
API文檔
Back4app的另一個優點是它為所有數據庫類自動生成文檔。
文檔包括模型描述、實用範例、錯誤處理說明等。
在側邊欄選擇“API > API Reference”以查看文檔。
Cloud Code
自動生成的API很棒,但您無法用它們完成所有操作。例如,如果您希望執行複雜的查詢、聚合數據或執行自定義代碼,您必須使用Cloud Code功能。
Cloud Code功能是Back4app的函數即服務(FaaS)產品。它們允許您定義自定義JavaScript函數,您可以通過API觸發或按固定時間基礎調度。
創建Cloud Code功能
讓我們創建兩個用於計算電子商務統計數據的Cloud Code功能:
totalRevenue()
將通過聚合購買來計算總收入topTenPopularProducts()
將根據購買返回最受歡迎的產品
首先,導航到側邊欄中的“Cloud Code > Functions & Web Hosting”。
您會注意到屏幕被分成兩個面板。左側是目錄結構;右側可以輸入您的代碼。
默認目錄是:
- cloud 用於Cloud Code功能和其他代碼
- public 目錄由Back4app自動提供服務(靜態資產、CSS、HTML)
導航到main.js。
然後,將以下代碼放入其中:
最後,點擊“Deploy”將功能部署到雲端。
上述代碼是使用Back4app Agent生成的——這是一個為開發人員設計的AutoGPT。該代理與Back4app和Back4app Containers緊密集成。它允許您創建應用、修改應用設置、生成自定義代碼等。
測試Cloud Code功能
在最後一部分,我們將測試剛剛實現的Cloud Code功能。
首先,選擇側邊欄中的“API > Console > JavaScript”,然後粘貼以下代碼:
要運行它,點擊屏幕右上角的“Run”。
您應該會得到以下響應:
// `totalRevenue` 輸出
{
"result": 9385.389999999994
}
要運行另一個功能,將totalRevenue
替換為topTenPopularProducts
。
// `topTenPopularProducts` 輸出
{
"result": [
{"objectId": "SA5mUfq9Ll", "name": "Science Fiction Novel", "count": 3},
{"objectId": "fV0DFPFlnz", "name": "Yoga Mat", "count": 3},
{"objectId": "gA4zn19Udo", "name": "Smartphone", "count": 2},
{"objectId": "UKeOHJkJ7l", "name": "Winter Jacket", "count": 2},
{"objectId": "8PodlEps2R", "name": "Espresso Machine", "count": 2},
{"objectId": "S15WrDgrpk", "name": "Hair Dryer", "count": 2},
{"objectId": "8O2D1egX51", "name": "4K Television", "count": 1},
{"objectId": "RriSWMDg48", "name": "Face Cream", "count": 1},
{"objectId": "Cq3Hqww69Q", "name": "Blender", "count": 1}
]
}
結論
總之,您已了解web services、它們的優勢、部署選項以及它們與API的比較。您現在應該也能夠將自己的web service部署到Back4app BaaS。
欲了解更多文章資源,請查看back4app-web-service儲存庫。