日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

短url服务java_Serverless-实现一个短网址服务(二)

發布時間:2024/4/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 短url服务java_Serverless-实现一个短网址服务(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

要點

上一篇 Serverless-實現一個短網址服務(一)實現了一個生成短鏈接的云函數,這一篇完成后半部分,實現短鏈接的跳轉。主要需要注意的內容有:

騰訊云函數的API調用中如何讀取path中的參數

騰訊云函數中的集成響應和透傳響應的區別

從請求的短鏈接獲取真實url

如前文所屬,我們生成的短鏈接是使用hashids庫從整數id生成的,所以獲取真實url的過程也非常簡單,只需要調用hashids的decode方法就可以獲取到原始的整數id,然后用這個作為參數查詢數據庫獲取到真實url

直接貼代碼

# -*- coding: utf8 -*-

from os import getenv

from hashids import Hashids

import json

from serverless_db_sdk import database

def main_handler(event, context):

# 讀取請求參數

if "requestContext" not in event.keys():

return {"errorCode": 410, "errorMsg": "event is not come from api gateway"}

request = event["requestContext"]

# 云函數的API調用中的path參數是這么讀取的

hash = event['pathParameters']['hash']

hashid = Hashids(salt="bangbangbang")

# decode得到id

auto_id = hashid.decode(hash)[0]

print(auto_id, hash)

# 用id從數據中查詢url

result_data = []

sql_template = """SELECT url FROM bing.short_url where id = %s """

connection = database("BING").connection(autocommit=False)

try:

cursor = connection.cursor()

cursor.execute(sql_template, (auto_id))

result = cursor.fetchone()

url = result[0]

finally:

connection.close()

#因為要返回302消息,需要按照騰訊云的定義的集成響應的格式來返回

return {

"isBase64Encoded": False,

"statusCode": 302,

"headers": {"Location": url}

}

復制代碼

重點解釋

path路徑參數讀取

我們一般生成短網址后使用的方式是這樣的:

http://域名/{短鏈接字符串}

比如這樣一個短鏈接:

short.url/zv

zv就是我們生成的短字符串,在騰訊云中要能夠使用這種類型的api請求,需要在API網關控制臺中對響應的api做如下配置:

然后在云函數中通過如下方式讀取參數:

# 這里的hash是前面配置的參數名

hash = event['pathParameters']['hash']

復制代碼

集成響應和透傳響應

簡單來說透傳響應只會返回200狀態碼,將返回的內容作為消息體透傳給前端,所以一般的返回json數據的函數調用可以直接使用此方式。

集成響應則可以自行定義返回的http狀態碼,消息頭等等內容,我們這里是一個短網址的跳轉,需要返回302或者301消息,所以必須使用集成響應的方式。

具體可以參見騰訊云官方文檔的解釋:

集成響應,是指 API 網關會將云函數的返回內容進行解析,并根據解析內容構造 HTTP 響應。

通過使用集成響應,可以通過代碼自主控制響應的狀態碼、headers、body內容,可以實現自定義格式的內容響應,例如響應 XML、HTML、JSON 甚至 JS 內容。

在使用集成響應時,需要按照 API 網關觸發器的集成響應返回數據結構,才可以被 API 網關成功解析,否則會出現 {"errno":403,"error":"Invalid scf response format. please check your scf response format."} 錯誤信息。

透傳響應,是指 API 網關將云函數的返回內容直接傳遞給API請求方。

通常這種響應的數據格式直接確定為JSON格式,狀態碼根據函數執行的狀態定義,函數執行成功即為 200 狀態碼。

通過透傳響應,用戶可以自行獲取到JSON格式后在調用位置解析結構,獲取結構內的內容。

樣例

service-jmhm1hno-1256668370.gz.apigw.tencentcs.com/test/go/zv

綁定上自己的域名之后,就可以實現一個自己的短鏈接跳轉服務了

關于找一找教程網

本站文章僅代表作者觀點,不代表本站立場,所有文章非營利性免費分享。

本站提供了軟件編程、網站開發技術、服務器運維、人工智能等等IT技術文章,希望廣大程序員努力學習,讓我們用科技改變世界。

[Serverless-實現一個短網址服務(二)]http://www.zyiz.net/tech/detail-134543.html

總結

以上是生活随笔為你收集整理的短url服务java_Serverless-实现一个短网址服务(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。