[Golang] 纯文本查看 复制代码
package main
import (
"encoding/json"
"fmt"
"xdb"
"github.com/gin-gonic/gin"
)
func main() {
var dbPath = "ip2region.xdb"
// 1、从 dbPath 加载整个 xdb 到内存
cBuff, err := xdb.LoadContentFromFile(dbPath)
if err != nil {
fmt.Printf("failed to load content from `%s`: %s\n", dbPath, err)
return
}
// 2、用全局的 cBuff 创建完全基于内存的cha询对象。
searcher, err := xdb.NewWithBuffer(cBuff)
if err != nil {
fmt.Printf("failed to create searcher with content: %s\n", err)
return
}
// 备注:并发使用,用整个 xdb 缓存创建的 searcher 对象可以安全用于并发。
//创建一个服务
ginserver := gin.Default()
ginserver.GET("/hello", func(context *gin.Context) {
context.JSON(200, gin.H{"msg": "hello,world"})
})
ginserver.POST("/getip", func(context *gin.Context) {
data, _ := context.GetRawData()
var m map[string]interface{}
_ = json.Unmarshal(data, &m)
ip := m["ip"]
strip := ip.(string)
region, err := searcher.SearchByStr(strip) //cha询Ip位置
fmt.Println(region, "收到的ip", err)
if err != nil {
context.JSON(201, gin.H{"msg": "ip未找到"})
}
context.JSON(200, gin.H{"address": region})
})
ginserver.Run(":8082")
}