找回密码
 成为会员
搜索
热搜: 活动 交友 discuz
查看: 86|回复: 0

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

[复制链接]

3

主题

6

回帖

35

积分

版主

积分
35
发表于 2024-8-9 08:54:13 | 显示全部楼层 |阅读模式

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)


您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

快速回复 返回顶部 返回列表