上节内容我们学习了添加食品记录内容,今天我来看一下如何调用第三方的接口功能。
浏览器请求
本项目案例中的获取店铺列表功能,以及添加商户记录,需要填写店铺地址。在输入店铺地址时,我们需要实时的检测用户关键词输入,并进行搜索返回对应地点的经纬度。因此,我们有必要提供地址检索的功能。
前端浏览器进行关键字检索输入,发送HTTP请求到服务端。在本项目案例中,前端浏览器请求信息为:
- URL:/v1/pois?address="北京市朝阳区xxx"
- Type:GET
- Desc:该请求接口用来实现对地址的检索查询
对接使用第三方API功能
在本项目中,我们使用第三方的公开API来进行关键词地址的检索,并返回具体的地址和经纬度信息。
本案例中使用的第三方的检索API的url为:https://elm.cangdu.org
请求API操作
使用http包的GET请求方式对地址关键词检索功能进行请求,获取相应的数据,编程实现如下:
app.Get("/v1/pois?{poi}", func(context context.Context) {
path := context.Request().URL.String()
rs, err := http.Get("https://elm.cangdu.org" + path)
if err != nil {
context.JSON(iris.Map{
"status": utils.RECODE_FAIL,
"type": utils.RESPMSG_ERROR_SEARCHADDRESS,
"message": utils.Recode2Text(utils.RESPMSG_ERROR_SEARCHADDRESS),
})
return
}
//请求成功
body, err := ioutil.ReadAll(rs.Body)
var searchList []*model.PoiSearch
json.Unmarshal(body, &searchList)
context.JSON(&searchList)
})
PoiSearch结构体
对于检索实体,我们通过定义PoiSearch结构体来进行实现:
type PoiSearch struct {
Name string `json:"name"`
Address string `json:"address"`
Latitude float32 `json:"latitude"`
Longitude float32 `json:"longitude"`
Geohash string `json:"geohash"`
}