您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關ServerLess如何進行天氣API實踐,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
前言
云計算是大勢所趨
Serverless 架構即“?服務?”架構,它是一種全新的架構方式,是云計算時代?種?命性的架構模式
FaaS(Function as a Service - 函數即服務) 是在無狀態容器中運行的事件驅動型計算的執行模型
云函數算是FaaS的一種具體的形式,由云商提供計算平臺,開發者只需關注函數邏輯的實現,將服務器相關的配置管理工作統統交給云商去做,不再花大精力去管理服務器
我們只需要提供一段代碼,由云商研制的 FaaS 方案幫我們選擇語言對應技術棧的最佳實踐,基于內置的擴展機制按實際需要,進行動態擴展計算資源,輕松部署服務到公網,并提供可靠的監控、報警保障,不需要以前一樣,服務器資源不是大部分時間處于閑置狀態,就是遇到超大瀏覽需要緊急擴容
給 FaaS 一個函數,就能上線一個高可用的服務
簡單的服務接口開發的專業性要求降低了,前端有了更大的發揮空間,包括但不限于:
BFF(Backend For Frontend)
SSR(Server-Side Rendering)
上面簡單的介紹了一下“云函數”,有一點抽象,下面就結合實操,來搞一個”實用的“
??搞一個簡單的天氣查詢API
就像這樣的:點我體驗
參數:cityId 地區參照表
所使用到的技術與平臺
Node.js (云函數選用JavaScript語言)
騰訊云 - 免費的云函數服務
阿里云 - 免費的墨跡天氣查詢服務
下面開始手把手教程
騰訊云側
1. 注冊賬號
注冊騰訊云賬號并登錄
https://cloud.tencent.com/
2. 進入控制臺
點擊右上角進入控制臺
3. 云函數-函數服務
左上角選擇云產品,輸入云函數,選擇 云函數-函數服務
4. 新建云函數
新建一個云函數
5. 錄入基本信息
符合規范的函數名稱
環境選擇一個Node.js的環境
選擇空白函數
然后下一步
6. 完成創建
直接點擊完成,什么都不更改
7. 觸發器
然后來到這個界面,點擊觸發管理
8. 創建觸發器
創建觸發器,填寫相關信息
觸發方式-API網關觸發
請求方法-GET
鑒權方法-免鑒權
9. 大功告成
體驗一下生成的觸發器鏈接
10. 觀察接口
觀察響應結果與我們的代碼
響應結果
我們的云函數代碼
關注紅色框中的內容
執行方法:index.main_handler
index 對應的就是 index.jsmain_handler就是就是index.js中對外暴露的 main_handler方法
再看代碼
'use strict';
exports.main_handler = async (event, context) => {
console.log("Hello World")
console.log(event)
console.log(event["non-exist"])
console.log(context)
return event
};
根據上上圖返回的結果可知其對應的是event里面的內容: 即我們可以在event中取到我們請求的參數,header,body等信息,便于我們執行后續邏輯
context的內容(console.log的內容)在哪里看?
11. 日志查詢
在日志查詢面板可以查詢到我們接口的調用信息,響應狀態與log的內容
12. 安裝依賴的模塊
這個和本地安裝差不多,一個敲命令,一個點按鈕
我們使用本地終端創建一個package.json文件
npm init -y
package.json
{
"name": "faas",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
如安裝axios,本地執行安裝先
yarn add axios
# or
npm i axios
此時的package.json
{
"name": "faas",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"axios": "^0.21.0"
}
}
在平臺上創建一個 package.json文件,并把上述內容粘貼進去,ctrl/command + S 保存修改的內容
選擇在線安裝依賴,然后點擊保存
安裝完成后 會出現 node_modules目錄
JS云函數創建相關流程,差不都陳述完畢
下面開始我們的代碼編寫
天氣云函數編寫
代碼同步到線上的方式
可以本地編輯后上傳文件
使用騰訊云的cli工具上傳
復制粘貼
這里比較簡單我們就復制粘貼了
先簡單編寫一下大體結構,然后點擊保存,再訪問剛剛的觸發器鏈接觀察返回的結果
index.js
'use strict';
const http = require('axios').default
function getNowWeather(cityId = 3) {
// 待編寫
return {
data:{
cityId
}
}
}
exports.main_handler = async (event, context) => {
// 結構取得url中傳遞的參數
const { queryString: { cityId } } = event
return getNowWeather(cityId)
};
下面實現getNowWeather的邏輯就要用到阿里云的服務了
阿里云側
先白嫖個服務
阿里云-免費版氣象天氣服務(cityid)-墨跡天氣
根據其文檔中的請求示例,我們先構建出 Node版本的方法
const http = require('axios').default
function getNowWeather(cityId = 3) {
const token = ''
const appcode = ''
const nowStatusURL = 'http://freecityid.market.alicloudapi.com/whapi/json/alicityweather/briefcondition' // 精簡實況的請求URL
const data = `cityId=${cityId}&token=${token}` // 請求參數
const headers = { // header
'Authorization': `APPCODE ${appcode}`,
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
}
// 發送請求
return http.post(nowStatusURL, data, {
headers
}).then(res => res.data)
}
購買服務后根據文檔找到token與appcode即可
控制臺->API網關->華北2(北京)
為了節約查找token與appcode的時間,下面列一下步驟(吐槽,阿里云的文檔太攔了,不方便信息定位)
token與appcode
API網關頁面地址
token: 應用管理->選擇一個應用->已授權API列表->選擇自己要查看的API->點擊調試API->調試面板的token參數即是所需參數
appcode: 應用管理->選擇一個應用->AppCode面板
鄭州做人流多少錢http://www.hnzzxb.com/
最終代碼
鄭州人流醫院http://www.zztjyyfk.com/
index.js
'use strict';
const http = require('axios').default
function getNowWeather(cityId = 3) {
const token = ''
const appcode = ''
const nowStatusURL = 'http://freecityid.market.alicloudapi.com/whapi/json/alicityweather/briefcondition' // 精簡實況的請求URL
const data = `cityId=${cityId}&token=${token}` // 請求參數
const headers = { // header
'Authorization': `APPCODE ${appcode}`,
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
}
// 發送請求
return http.post(nowStatusURL, data, {
headers
}).then(res => res.data)
}
exports.main_handler = async (event, context) => {
const {queryString:{cityId}} = event
return await getNowWeather(cityId)
};
觸發器鏈接
最后
到此一個云函數就開發完畢了
可以感覺到,如果熟悉創建流程了,只需要幾分鐘就能創建一個提供服務的API,極大的節約了成本
不懂服務端部署,服務器運維,Linux的開發者可以通過 云函數+云數據庫(關系數據庫,非關系數據庫) 快速搭建一個后端服務
文件存儲服務可以使用OSS
開發者只需要通過云函數調用各服務提供的API即可完成一個后端服務的構建
關于ServerLess如何進行天氣API實踐就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。