假行僧 发表于 2024-8-9 08:54:13

ISM API接口,用于对外提供数据


var time = import("time")
var fmt = import("fmt")
var http = import("net/http")
var json = import("encoding/json")
var io =import("io")
var ioutil =import("io/ioutil")

//跨域开启,此段不需要修改
func openky(w){
    w.Header().Set("Content-Type", "Application/json")
    w.Header().Set("Access-Control-Allow-Origin", "http://localhost:8080") //允许访问所有域
    w.Header().Set("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE, OPTIONS")
    w.Header().Set("Access-Control-Allow-Headers", "x-requested-with,content-type")
    w.Header().Set("Access-Control-Expose-Headers", "Access-Control-Allow-Headers, Token")
    w.Header().Set("Access-Control-Allow-Credentials", "true")
}

//请求接口 RestApi是接口名称,可以修改为你们自己的接口名称
http.HandleFunc("/RestApi", func(w, r) {

    //此处加上跨域请求,每个接口都要先调用这个函数。
    openky(w);
    fmt.Println("RestApi 接口")
    //构建返回的接口,格式为json格式,ISM的Go虚拟机语法,定义变量可以直接用变量赋值
    //不需要var声明。不能使用 := 去赋值
    //切记结构体的成员变量首字母一定要大写。

//获取到值后的回复变量
ResponseData = map[string]interface{}
//失败后的消息返回变量
FailedResponseData = map[string]interface{}

//通过GetDeviceData函数把系统采集到数据赋值给结构体变量
//m1是测试的设备名称,register0和register1是m1设备下面的两个数据名称

//ResponseData["Register0"] = GetDeviceData("m1->register0")
//ResponseData["Register1"] = GetDeviceData("m1->register1")
//可以自己按照接口要求返回特定格式,此段代码返回的格式
//{
//"Code": -2,
//"Msg": "设备值获取错误",
//   "ResponseData": {
//    "Register0": 0,
//    "Register1": 0
//   }
//}
params = r.URL.Query()

fmt.Println( params.Get("page11")==""?"true":"false")
fmt.Println(params.Get("perPage"))

datasend = make([]struct {
    Engine string,
    Browser string,
    Platform string,
    Version string,
    Grade string,
    BadgeText string,
    Id int
},10)
for i=0;i<10;i++{
    datasend[i].Engine = "sd"
    datasend[i].Browser = "sd"
    datasend[i].Platform = "sd"
    datasend[i].Version = "sd"
    datasend[i].Grade = "sd"
    datasend[i].BadgeText = "sd"
    datasend[i].Id = 1
}


ResponseData["data"] = map[string]interface{}
ResponseData["data"]["count"]=10
ResponseData["data"]["rows"]=datasend

ResponseData["status"]=0
ResponseData["msg"]="ok"



//把数据转化为json格式json.Marshal函数是把一个任意变量转为json格式
responseJsonData,err = json.Marshal(ResponseData)
if err!= nil{
    FailedResponseData["Code"]=-1
    FailedResponseData["Msg"]="JSON格式转换失败"
    responseJsonData,_ = json.Marshal(FailedResponseData)
    //通过w.Write函数把数据通过http协议的GET或者POST方式返回
    w.Write(toString(responseJsonData))
}else{
    //通过w.Write函数把数据通过http协议的GET或者POST方式返回
    w.Write(toString(responseJsonData))
}

})
//18091监听的端口,可以根据需要更改
fmt.Println("API接口服务已经启动,提供了ApiDemo")
http.ListenAndServe(":18089", nil)


页: [1]
查看完整版本: ISM API接口,用于对外提供数据