在这里,我有一个函数,我在其中发送一个 POST 请求,该请求用于将客户保存在带有数据的正方形中,并使用身份验证设置标头,variable_name.Header.Set() 但在正文响应中,它总是会给我以下错误:-"errors":[ {"category":"AUTHENTICATION_ERROR", "code":"UNAUTHORIZED", "detail":"Your request did not include an `Authorization` http header with an access token. }]}但是在函数中我设置了身份验证令牌。代码:-func CreateCustomer(c *gin.Context) {customer := models.Customer{}bearer := strings.Split(c.Request.Header["Authorization"][0], "Bearer")// token pass in the postman.bearerToken := strings.TrimSpace(bearer[1])customerErr := json.NewDecoder(c.Request.Body).Decode(&customer)if customerErr != nil { fmt.Println(customerErr) return}fmt.Println(customer)bindData, err := json.Marshal(customer)if err != nil { panic(err)}var jsonStr = []byte(string(bindData))url :="https://connect.squareup.com/v2/customers"fmt.Println(url)req, err := http.Post(url, "application/json", bytes.NewBuffer(jsonStr))// I used this one too.// req.Header.Set("Authorization", "Bearer "+bearerToken)// req.Header.Set("Accept", "application/json")req.Header.Add("Authorization", "Bearer "+bearerToken)req.Header.Add("Accept", "application/json")fmt.Println(req.Header)if err != nil { panic(err)}defer req.Body.Close()body, _ := ioutil.ReadAll(req.Body)fmt.Println("response Body:", string(body))}type Customer struct { GivenName string `json:"given_name" bson:"given_name"` FamilyName string `json:"family_name" bson:"family_name"` CompanyName string `json:"company_name" bson:"company_name"` Nickname string `json:"nickname" bson:"nickname"` EmailAddress string `json:"email_address" bson:"email_address"` Address Addresss `json:"address" bson:"address"` PhoneNumber string `json:"phone_number" bson:"phone_number"` ReferenceId string `json:"reference_id" bson:"reference_id"` Note string `json:"note" bson:"note"`}任何人都可以告诉我我应该做什么错误或我在哪里进行更正以便能够在 Squareup 中保存客户?
2 回答
浮云间
TA贡献1829条经验 获得超4个赞
您的代码发送 POST 请求,并在处理请求后将标头添加到响应结构中:
响应,错误:= http.Post(url, "application/json", bytes.NewBuffer(jsonStr))
您应该先设置标头,然后再发送请求:
// create request
req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonStr))
if err != nil {
panic(err)
}
// set headers
req.Header.Add("Authorization", "Bearer "+bearerToken)
req.Header.Add("Accept", "application/json")
// send request with headers
client := &http.Client{}
response, err := client.Do(req)
慕标琳琳
TA贡献1830条经验 获得超9个赞
唯一提醒的是,尽量不要混淆“身份验证”和“授权”,这是我遇到的一种障碍。不是字面上的意思,大家都懂的。然而,即使在语法中,很多材料也会交替使用这两个词,至少在我看来,这是不应该鼓励的。上面的话题就是一个很好的例子:以“身份验证”作为问题开始,然后以“授权”作为解决方案结束。
- 2 回答
- 0 关注
- 126 浏览
添加回答
举报
0/150
提交
取消