使用go的 iris 框架编写一个从mysql查询数据并返回的web接口简单demo

package main
import (
   "database/sql"
   _ "github.com/go-sql-driver/mysql"
   "github.com/kataras/iris"
)

//数据库配置
const (
   userName = "root"
   password = "123456lyl"
   ip = "125.200.93.154"
   port = "3306"
   dbName = "xs_db"
)

func checkErr(err error){
   if err!=nil{
      panic(err)
   }
}
//获取同城旅游网机票价格数据
func get_ly_datas()  (list [] map[string]string){
   //连接数据库
   db,err:=sql.Open("mysql",userName+":"+password+"@tcp("+ip+")/"+dbName+"?charset=utf8")
   checkErr(err)
   stmt,err:=db.Prepare("SELECT * FROM tb_ly")
   checkErr(err)
   //执行查询语句,如果有参数,需要在Query()中传入sql参数
   rows ,err :=stmt.Query()
   checkErr(err)

   //定义数据列表切片数组
   var ly_list [] map[string]string

   for rows.Next() {
      var air_id string
      var airline string
      var flight_number string
      var dep_time string
      var dep_airport  string
      var aircraft_type string
      var arr_time string
      var arr_airport string
      var price string
      var date_str string
      var crawl_date string
      var crawl_time string
      err :=rows.Scan(&air_id,&airline,&flight_number,&dep_time,&dep_airport,&aircraft_type,&arr_time,&arr_airport,&price,&date_str,&crawl_date,&crawl_time)
      checkErr(err)
      //打印数据
      //fmt.Println(air_id,airline,flight_number,dep_time,dep_airport,aircraft_type,arr_time,arr_airport,price,date_str,crawl_date,crawl_time)
      //组装数据成map格式,然后添加到ly_list列表中
      var item=make(map[string]string)
      item["air_id"]= air_id
      item["airline"]=airline
      item["flight_number"]=flight_number
      item["dep_time"]=dep_time
      item["dep_airport"]=dep_airport
      item["aircraft_type"]=aircraft_type
      item["arr_time"]=arr_time
      item["arr_airport"]=arr_airport
      item["price"]=price
      item["date_str"]=date_str
      item["crawl_date"]=crawl_date
      item["crawl_time"]=crawl_time
      ly_list=append(ly_list,item)
   }
   defer db.Close()
   defer stmt.Close()
   defer rows.Close()

   return ly_list
}

//主函数
func main(){

   app := iris.Default()
   //post请求接口路由创建
   app.Post("/post", func(ctx iris.Context) {
      //id := ctx.URLParam("id")
      page := ctx.URLParamDefault("page", "1")
      //name := ctx.FormValue("name")
      message := ctx.FormValue("message")

      ctx.JSON(iris.Map{
         "state": 0,
         "page":page,
         "message":message,
         "data_list":get_ly_datas(),
      })
   })
   //启动服务监听本地8080端口
   app.Run(iris.Addr("127.0.0.1:8080"))
}

你可能感兴趣的:(go语言,go语言学习)