最近做的一個專案是采用前后端分離模式寫前端,后端是fabric區塊鏈,提供介面,需要使用post方法進行訪問,如上一章注冊用戶,就是需要把用戶名、賬戶資訊轉換成json形式
使用post方法傳給后端區塊鏈的url.話不多說直接看代碼分析,
/*post1注冊用戶*/ func signup(url string, i *CreateUserInput) (status int) { data, err := json.Marshal(i) if err != nil { log.Fatal(err) } req, err := http.NewRequest("POST", url, bytes.NewBuffer(data)) if err != nil { log.Fatal(err) } req.Header.Set("Content-Type", "application/json") var client = http.DefaultClient response, err := client.Do(req) if err != nil { log.Fatal(err) } defer response.Body.Close() BodyData, err := ioutil.ReadAll(response.Body) if err != nil { log.Fatal(err) } var info = BaseInfo{} err = json.Unmarshal(BodyData, &info) if err != nil { log.Fatal(err) } switch info.Code { case 200: fmt.Printf("%s 注冊成功\n", info.Msg) case 500: fmt.Printf("注冊失敗,%s", info.Msg) return } status = info.Code return }
這個函式,是我自己寫的,按照網上其他post提交方法寫的,
引數:url string, i *CreateUserInput;url是需要post的URL;i是結構體;
函式中data, err := json.Marshal(i)將結構體轉成json形式,
req, err := http.NewRequest("POST", url, bytes.NewBuffer(data))需要提供引數post
重點的是這段代碼:
var info = BaseInfo{} err = json.Unmarshal(BodyData, &info) if err != nil { log.Fatal(err) } switch info.Code { case 200: fmt.Printf("%s 注冊成功\n", info.Msg) case 500: fmt.Printf("注冊失敗,%s", info.Msg) return } status = info.Code
獲取后端區塊鏈給的POST回傳值,即那邊介面的回應是否成功(這個后端區塊鏈會給一個類似狀態碼的結構體形式)
err = json.Unmarshal(BodyData, &info)將接收到的json轉成結構體,
如果狀態碼為200,則POST提交資料成功,否則則輸出錯誤資訊,
參考文章:
https://developer.aliyun.com/article/1023715
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/542703.html
標籤:其他
上一篇:day15-宣告式事務
