Предотвратить удаление некоторых символов из Джина - PullRequest
0 голосов
/ 19 июня 2020

Я использую gin goni c в качестве работы API Frame. В настоящее время у меня происходит странная проблема, когда джин обычно вырезает некоторых из моих персонажей. Вот моя модель

 type ConfirmationCode struct {
        Code        string `form:"code" json:"code" xml:"code" binding:"required"`
        PhoneNumber string `form:"number" json:"number" xml:"number" binding:"required"`
        RequestId   string `form:"request_id" json:"request_id" xml:"request_id" binding:"required"`
    }

Вот мое главное развлечение c

func main(){
    router.POST("/codes/confirm", func(c *gin.Context) {
        confirmCode(c)
    })
}

Пример запроса POST

/codes/confirm?api_key=xxxx&api_secret=xxx&request_id=a70a917406bd4f9
fb81fad0400ac535b&code=950762&number=+2347*********

Вот мой Handler Fun c

   func confirmCode(c *gin.Context) {
        var confirmationCode ConfirmationCode
        if err := c.ShouldBind(&confirmationCode); err != nil {
            m := err.Error()
            if m == "EOF" {
                m = "Please provide a valid code"
                spitBadRequest(m, c)
                return
            }
            for _, fieldErr := range err.(validator.ValidationErrors) {
                spitBadRequest(constants.ValidationErrorMap[fieldErr.StructField()]+" is required", c)
                return
            }
            return
        }
        receivedNumber:=confirmationCode.PhoneNumber
        log.Println(receivedNumber)
        //receivedNumber is always coming out as 2347********* without the + sign.
        //How can I make sure that the + sign is preserved and not stripped out.
}

1 Ответ

1 голос
/ 19 июня 2020

Ну, URL-адреса имеют кодировку URL , а + - это пробел в кодировке URL. Итак, если вы хотите сохранить +, вам, скорее всего, просто нужно его закодировать URL-адресом, который будет %2B.

&number=%2B2347*********
...