2021-01-18

[Azure] Azure Logic App 製作一個簡單的 API ,收 HTTP Request ,製作 HTTP Response ,透過 IP 反查地理位置

最近都在玩 Azure Logic App ,玩的時候我在想可不可以透過  Azure Logic App 開發一個簡單的 API ,這時候我要有收資料,跟回傳資料的能力,後來玩一下竟然可以也..

這裡面 SAMPLE ,STEP 1. 我自己 POST 到 Azure Logic App 一段 JSON : {"IP":"163.13.202.199"} , STEP2 . 在 Azure Logic App 收到後我會把 IP Parse 出來,STEP 3. 將 IP 透過 GET 傳到網址  http://ip.taobao.com/outGetIpInfo?ip=[IP]&accessKey=alibaba-inc ,之後回拿到一個 JSON 如下 :


{"data":{"area":"","country":"美国","isp_id":"xx","queryIp":"172.67.152.33","city":"旧金山","ip":"172.67.152.33","isp":"XX","county":"","region_id":"US_104","area_id":"","county_id":null,"region":"加利福尼亚","country_id":"US","city_id":"US_1033"},"msg":"query success","code":0}

STEP4.我們把 data.city 的值拿出來後 Response 出去,我們就開始吧..

1. POST 到 Azure Logic Apps 一段 JSON : {"IP":"163.13.202.199"}  ,這時候在 Azure Logic Apps 這邊我們要加入一個 Triggers : HTTP Request

這時候裡面輸入的 是 JSON Schema ,不知道這的朋友 可以參考我這篇文章 使用 NJsonSchema.CodeGeneration.CSharp 製作 JSON Schema + 驗證 JSON ,簡單的說我就是規範 輸入進來的東西一定要 IP 這屬性,並且是 string

2. 將第一步 拿到的 IP ,選擇 HTTP 的 Action , URI 的部分 輸入 http://ip.taobao.com/outGetIpInfo?ip=@{triggerBody()?['IP']}&accessKey=alibaba-inc

其中的意思就是帶入 第一步驟 triggerBody 中的 IP 這個的值

3. 取得 Step2 Response 的值,並且將 data.city 的值拿出來

BODY 的部分為 @{body('QUERYLOCATION')?['data']?['city']} , 這裡面的 QUERYLOCATION 是 STEP2 的 Action 名稱。

存檔後第一個步驟你回拿到一個網址,之後你可以對那網址 POST 資料


這樣就完成了,最後附上 全部的 Azure Logic Apps 程式碼


整體用下來,簡單可用性非常高,如果學會了真的可以打造出 serverless 的 service

reference :

https://docs.microsoft.com/zh-tw/azure/connectors/connectors-native-reqres