【发布时间】:2019-09-17 07:13:39
【问题描述】:
我不确定为什么在运行以下 curl 请求时发布的数据不存在:
curl --request POST http://localhost:4000 --header "Content-Type: application/json" --data '{ "hostname": "bbc.co.uk" }'
反对下面的代码。它本质上只是使用变量hostname 发布json,但由于某种原因它没有出现在req.Body 或Domain 结构数组中。请注意这是基于this tutorial
package main
import (
"encoding/json"
"log"
"net/http"
"fmt"
"github.com/gorilla/mux"
"github.com/gorilla/handlers"
)
type Domain struct {
hostname string `json:"hostname,omitempty"`
}
var domains []Domain
func CreateDomainEndpoint(w http.ResponseWriter, req *http.Request) {
var domain Domain
fmt.Println(req.Body)
_ = json.NewDecoder(req.Body).Decode(&domain)
domains = append(domains, domain)
json.NewEncoder(w).Encode(domains)
}
func main() {
router := mux.NewRouter()
router.HandleFunc("/", CreateDomainEndpoint).Methods("POST")
log.Fatal(http.ListenAndServe(":4000", handlers.CORS(handlers.AllowedHeaders([]string{"X-Requested-With", "Content-Type", "Authorization"}), handlers.AllowedMethods([]string{"GET", "POST", "PUT", "HEAD", "OPTIONS"}), handlers.AllowedOrigins([]string{"*"}))(router)))
}
【问题讨论】: