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

2021-01-18

最近都在玩 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


當麻許的超技八 2014 | Donma Hsu Design.