为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 POST 方法中传递标头?

如何在 POST 方法中传递标头?

Go
噜噜哒 2023-05-15 15:15:09
在这里,我有一个函数,我在其中发送一个 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)


查看完整回答
反对 回复 2023-05-15
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

唯一提醒的是,尽量不要混淆“身份验证”和“授权”,这是我遇到的一种障碍。不是字面上的意思,大家都懂的。然而,即使在语法中,很多材料也会交替使用这两个词,至少在我看来,这是不应该鼓励的。上面的话题就是一个很好的例子:以“身份验证”作为问题开始,然后以“授权”作为解决方案结束。



查看完整回答
反对 回复 2023-05-15
  • 2 回答
  • 0 关注
  • 126 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信