shell調用api store查詢手機號碼歸屬地

來源:互聯網
上載者:User
一、api store簡介

api store是屬於一個API彙總平台,可以向外提供各種的資料服務,比較有代表性的有dev store,百度api store和彙總資料等等,這類服務通過向外提供rest api介面來暴露給第三方的開發人員。
api store提供了很多類型的資料服務,有生活常用,應用開發,金融理財,旅遊票務等等api,但是有些介面是有收費的,同時也提供了很多免費的介面,這裡就用手機號碼歸屬地查詢作為一個demo來做api的調用展示。 二、shell對rest介面的支援

在處理restful api這塊,一直是java的強項,特別是近年來流行的spring boot架構,微服務的理念已成為流行的趨勢。這裡介紹用更輕量級的shell來調用api介面,同時溫習一下shell的指令碼吧。
shell處理restful api時,shell支援curl命令,curl命令對http類比發送http請求提供很良好的支援。同時在處理json資料這塊,shell提供了jq工具,對json進行了很好的解釋支援。 三、代碼實現思路 1. 手機號碼歸屬地的api

本文的調用的api來自於百度api store,其官方公布的api介面如下:

curl --get --include'http://apis.baidu.com/apistore/mobilenumber/mobilenumber?phone=15210011578' -H 'apikey:您的apikey'
2.JSON返回樣本 :
{"errNum": 0,"retMsg": "success","retData": {"phone": "15210011578","prefix": "1521001","supplier": "移動 ","province": "北京 ","city": "北京 ","suit": "152卡"}}
3.返回結果json的解析 (1) jq的安裝和使用:

mac的安裝命令:brew install jq
CentOS or Ubuntu安裝命令:
apt-get -qq -y install jq || yum -y install jq (2) jsonStr代表以上的json返回樣本。

echo $jsonStr | jq '.' #格式化json並校正json字串是否合法
(3) 提取json的欄位值
echo $jsonStr | jq '.retMsg' #取得返回的retMsgecho $jsonStr | jq '.retData' | jq '.phone' #取得返回的phone
四、源碼樣本
#!/bin/bash#author:zhengsc#describe:查詢服務#查詢手機號歸屬地#變數定義APIKEY=7531365f3dc9873af649bce596aacb92 #apikeyRESTAPI_PHONE='http://apis.baidu.com/apistore/mobilenumber/mobilenumber?phone=' #調用api的查詢地址PHONEPATTERN='^1[34578][0-9]{9}$' #手機號Regex校正EXIT='^[a-z|A-Z]*$'#菜單showMenu(){read -p "******************************************        mobile number query tool       **        author:zhengsc                 **        date:2016-09-23                **        exit: a-z                      ******************************************請輸入您的手機號碼:" phone}#調用介面查詢#附json結果返回的格式#{#  "errNum": 0,#  "retMsg": "success",#  "retData": {#    "phone": "15270864042",#    "prefix": "1527086",#    "supplier": "移動",#    "province": "江西",#    "city": "南昌",#    "suit": "152卡"#  }#}phoneQuery(){json=$(curl -s --get  "$RESTAPI_PHONE${phone}"  -H "apikey:${APIKEY}")#echo "${json}" | jq '.'parseJson ${json}}#json解釋parseJson(){jsonStr=$1retMsg=$(echo ${jsonStr} | jq '.retMsg') #返回碼if [ "${retMsg}" = '"success"' ]; thenprovince=$(echo ${jsonStr} | jq '.retData' | jq '.province') #省city=$(echo ${jsonStr} | jq '.retData' | jq '.city') #市supplier=$(echo ${jsonStr} | jq '.retData' | jq '.supplier') #電訊廠商suit=$(echo ${jsonStr} | jq '.retData' | jq '.suit') #電話卡類型echo "歸屬地查詢結果:${province}${city}${supplier}${suit}"elseecho "查詢失敗!"fi}installjq(){ if [[ ! `which jq` ]]; then  echo "您的系統沒有安裝jq工具,請先安裝jq工具! "  # adaptive for CentOS or Ubuntu  apt-get -qq -y install jq || yum -y install jq  [ $? -ne 0 ] && echo "jq工具安裝失敗! ";echo "jq工具安裝成功! "  echo "$(which jq) 已經找到!"fi}#主函數main(){installjq #安裝jq工具showMenu #調用菜單函數if [[ "${phone}" =~ $EXIT ]]; thenecho "您已退出查詢工具,謝謝使用"exit #按任意字母鍵退出查詢工具fiif [[ "${phone}" =~ $PHONEPATTERN ]]; thenphoneQuery ${phone}elseecho "您輸入的手機號碼格式不正確"showMenufi}#主函數調用main
五、運行截圖



這裡寫圖片描述

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.