go语言http接口示例

 

go语言http接口示例

下面是一个获取随机数接口。

主要为获取http请求参数,返回json数据。

 

  1 // keymgrapiHttp project main.go
  2 package main
  3 
  4 import (
  5     "encoding/json"
  6     "fmt"
  7     "io"
  8     "io/ioutil"
  9     "log"
 10     "net/http"
 11     "strconv"
 12     "yuzyong/keymgrapi"
 13 )
 14 
 15 type Ret struct {
 16     Code       int
 17     Outdata    []byte
 18     OutdataLen int
 19     Param      string
 20     Msg        string //msgtype??
 21     // Data  []Data
 22 }
 23 
 24 var addr string = "192.168.2.148:9166"
 25 var count int = 0
 26 
 27 func main() {
 28     fmt.Println("Hello World!")
 29     httpStart()
 30 }
 31 
 32 func csp_random_Handler(w http.ResponseWriter, r *http.Request) {
 33     //打印请求主机地址
 34     fmt.Println(r.Host)
 35     //打印请求头信息
 36     fmt.Printf("header content:[%v]\n", r.Header)
 37 
 38     //获取 post 请求中 form 里边的数据
 39     // fmt.Printf("form content:[%s, %s]\n", r.PostFormValue("username"), r.PostFormValue("passwd"))
 40     // fmt.Printf("form content:[%s, %s]\n", r.PostFormValue("len"), r.PostFormValue("passwd"))
 41 
 42     len := r.PostFormValue("randDataLen")
 43 
 44     len_int, err := strconv.Atoi(len)
 45     var randData = make([]byte, len_int)
 46     // result, _, _ := YM_GenRandom(pKmpHandle, len_int, uintptr(unsafe.Pointer(&randData[0])))
 47 
 48     conn, err := keymgrapi.YM_GetConnect(addr)
 49     if err != nil {
 50         log.Printf("dial error: %s", err)
 51         return
 52     }
 53     defer keymgrapi.YM_DisConnect(conn)
 54 
 55     //正式开始调用接口
 56 
 57     //随机数
 58     randData, _, status := keymgrapi.YM_GenRandom(conn, len_int)
 59     if status == 0 {
 60         count += 1
 61         fmt.Printf("[%d] YM_GenRandom success. \n", count)
 62     } else {
 63         count += 1
 64         fmt.Printf("[%d] YM_GenRandom error. status=%d \n", count, status)
 65         fmt.Printf("[%d] YM_GenRandom failed. randData: %v\n", count, randData)
 66     }
 67 
 68     fmt.Println("randData: ", randData)
 69 
 70     //读取请求体信息
 71     // bodyContent, err := ioutil.ReadAll(r.Body)
 72     // if err != nil && err != io.EOF {
 73     //     fmt.Printf("read body content failed, err:[%s]\n", err.Error())
 74     //     return
 75     // }
 76     // fmt.Printf("body content:[%s]\n", string(bodyContent))
 77 
 78     //响应
 79     data := make(map[string]interface{})
 80     data["code"] = status
 81     data["randData"] = randData
 82     jsonData, _ := json.Marshal(data)
 83     io.WriteString(w, string(jsonData))
 84     // fmt.Fprintf(w, string(jsonData))
 85 
 86 }
 87 
 88 func IndexHandler(w http.ResponseWriter, r *http.Request) {
 89     //打印请求主机地址
 90     fmt.Println(r.Host)
 91     //打印请求头信息
 92     fmt.Printf("header content:[%v]\n", r.Header)
 93 
 94     //获取 post 请求中 form 里边的数据
 95     fmt.Printf("form content:[%s, %s]\n", r.PostFormValue("username"), r.PostFormValue("passwd"))
 96 
 97     //读取请求体信息
 98     bodyContent, err := ioutil.ReadAll(r.Body)
 99     if err != nil && err != io.EOF {
100         fmt.Printf("read body content failed, err:[%s]\n", err.Error())
101         return
102     }
103     fmt.Printf("body content:[%s]\n", string(bodyContent))
104 
105     //返回响应内容
106     fmt.Fprintf(w, "hello world ~")
107 }
108 
109 func httpStart() {
110     http.HandleFunc("/index", IndexHandler)
111     // http.HandleFunc("/csp/msgDigest", csp_msgDigest_Handler)
112     http.HandleFunc("/csp/random", csp_random_Handler)
113     // http.HandleFunc("/csp/getsm4key", csp_getsm4key_handler)
114     // http.HandleFunc("/csp/sm4ecbEnc", csp_sm4ecbEnc_handler)
115     // http.HandleFunc("/csp/sm4ecbDec", csp_sm4ecbDec_handler)
116     // http.HandleFunc("/csp/sm4cbcEnc", csp_sm4cbcEnc_handler)
117     // http.HandleFunc("/csp/sm4cbcDec", csp_sm4cbcDec_handler)
118     // http.HandleFunc("/csp/genMac", csp_genMac_handler)
119     // http.HandleFunc("/csp/verifyMac", csp_verifyMac_handler)
120     // http.HandleFunc("/csp/genSM2KeyPair", csp_genSM2KeyPair_handler)
121     // http.HandleFunc("/csp/sm2PubKeyEnc", csp_sm2PubKeyEnc_handler)
122     // http.HandleFunc("/csp/sm2PriKeyDec", csp_sm2PriKeyDec_handler)
123     // http.HandleFunc("/csp/sm2Sign", csp_sm2Sign_handler)
124     // http.HandleFunc("/csp/sm2Verify", csp_sm2Verify_handler)
125     // http.HandleFunc("/csp/getSM2PubKey", csp_getSM2PubKey_handler)
126     http.ListenAndServe("0.0.0.0:8000", nil)
127 
128 }

 

postman测试接口

 

 

posted on 2021-09-28 14:15  yuzyong  阅读(1003)  评论(0编辑  收藏  举报