zoukankan      html  css  js  c++  java
  • Go net/http获取body中json格式数据

    Go net/http获取body中json格式数据

    package main
    
    import (
    	"encoding/json"
    	"fmt"
    	"io/ioutil"
    	"net/http"
    )
    
    type AutotaskRequest struct {
    	RequestID string     `json:"requestid"`
    	Clone     CloneModel `json:"clone"`
    	Push      PushModel  `json:"push"`
    }
    
    type CloneModel struct {
    	//TODO
    	//"Method": string `json:"ceph"`
    	RequestID   string `json:"requestid"`
    	CallbackURL string `json:"callbackurl"`
    }
    
    type PushModel struct {
    	RequestID   string `json:"requestiD"`
    	CallbackURL string `json:"callbackuRL"`
    	IP          string `json:"remoteip"`
    	Port        int    `json:"remoteport"`
    	User        string `json:"user"`
    }
    
    func test(w http.ResponseWriter, r *http.Request) {
    	// r.ParseForm()
    	defer fmt.Fprintf(w, "ok
    ")
    
    	fmt.Println("method:", r.Method)
    	body, err := ioutil.ReadAll(r.Body)
    	if err != nil {
    		fmt.Printf("read body err, %v
    ", err)
    		return
    	}
    	println("json:", string(body))
    
    	var a AutotaskRequest
    	if err = json.Unmarshal(body, &a); err != nil {
    		fmt.Printf("Unmarshal err, %v
    ", err)
    		return
    	}
    	fmt.Printf("%+v", a)
    
    }
    
    func main() {
    	http.HandleFunc("/test", test)
    	http.ListenAndServe(":8888", nil)
    }
    

      客户端所传递参数如下:

    {
        "requestid": "xxxxx",
        "clone": {
            "method": "ceph",
            "callbackurl": "xxx",
            "remoteip": "192.168.2.1",
            "remoteport": 8080,
            "user": "xxx",
            "pass": "xxx",
            "path": "xxx",
            "filename": "xxx"
        },
        "optimize": {
            "callbackurl": "xxx",
            "filter": {
                "k1": true,
                "k2": false
            },
            "trim": true,
            "progressive": true,
            "quality": 100,
            "colorNum": 256,
            "gifOptLevel": 2,
            "svgo": true,
            "guetzli": false,
            "css_rewrite": false,
            "js_rewrite": false
        },
        "push": {
            "method": "ceph",
            "callbackurl": "xxx",
            "remoteip": "192.168.2.1",
            "remoteport": 8080,
            "user": "xxx",
            "pass": "xxx",
            "path": "xxx",
            "filename": "xxx"
        }
    }

    json传递的参数中,服务端有的没有对应字段

  • 相关阅读:
    PAT 甲级 1132 Cut Integer (20 分)
    AcWing 7.混合背包问题
    AcWing 9. 分组背包问题
    AcWing 5. 多重背包问题 II
    AcWing 3. 完全背包问题
    AcWing 4. 多重背包问题
    AcWing 2. 01背包问题
    AcWing 875. 快速幂
    AcWing 874. 筛法求欧拉函数
    AcWing 873. 欧拉函数
  • 原文地址:https://www.cnblogs.com/pluse/p/7927768.html
Copyright © 2011-2022 走看看