本帖最后由 小明无敌 于 2023-7-29 23:53 编辑
得力于go的高性能 配合gin框架 直接写服务端应用 很简单的几句话 就可以实现高性能下载地址 https://wwot.lanzouw.com/itgCO13tonja
刚学go 有什么不对的地方 谢谢指出
Ip2region 一个查ip位置的例子测试运行的话 直接 main.exe 就创建了本地的服务 端口8082
https://gin-gonic.com/zh-cn/ gin框架
[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")
}
|