Я могу использовать GET, но я не могу использовать POST от axios, отправляя данные на мой сервер gin-gonic golang.Это прекрасно работает в Почтальоне.Когда я перебрасываю запрос с помощью Axios, я ничего не получаю взамен.
Когда я захожу на сервер gin-gonic, он показывает, что он вернул ошибку 500.После дальнейшей проверки я вижу, что ни одна из переменных поста не была доступна джину.
Когда я использую Postman, сервер возвращает массив, как указано.У меня есть ощущение, что это может быть связано с заголовками, но я действительно в тупике.Я столкнулся с этой проблемой около 6 месяцев назад и никогда не понимал ее.Теперь я помню, почему я не продолжил работу с axios и nuxt:).
Вот маршрут сервера golang gin-gonic.
func initServer() {
router := gin.Default()
config := cors.DefaultConfig()
config.AddAllowHeaders("*",)
config.AllowAllOrigins = true
config.AllowMethods = []string{"POST", "GET"}
router.Use(cors.New(config))
v1 := router.Group("/api/v1/stripe")
{
v1.POST("/pay", BuyProduct)
v1.POST("/card", UpdateCard)
v1.GET("/products", GetAllProducts)
v1.GET("/products/id/:productId", GetProduct)
v1.GET("/products/types/:typeId", GetProductType)
v1.GET("/products/types", GetAllProductTypes)
}
// You can get individual args with normal indexing.
serverAddress := "127.0.0.1:8080"
if len(os.Args) > 1 {
arg := os.Args[1]
serverAddress = fmt.Sprintf("127.0.0.1:%v", arg)
}
router.Run(serverAddress)
}
Вот функция получателя, которая обрабатывает маршрутизаторзвонки, когда конечная точка нажата
func BuyProduct(c *gin.Context) {
postUserID := c.PostForm("userId")
postProductId := c.PostForm("productId")
token := c.PostForm("token")
userId, err := strconv.Atoi(postUserID)
if err != nil {
panic(err)
}
productId, err := strconv.Atoi(postProductId)
if err != nil {
panic(err)
}
custy := user.InitCustomer(int64(userId), token)
custy.GetStripeCustomerData()
custy.SelectProduct(products.NewProduct(int64(productId)))
custy.Purchase()
c.JSON(200, gin.H{"status": 200,
"product": custy.Product,
"user": *custy.Saver.User,
"subscriptions": *custy.Subscriptions,
"ch": custy.Logs,
})
return
}
Вот мой аксиос (nuxt) код.
async purchaseSubscription() {
const paid = await
this.$axios.$post('http://localhost:8080/api/v1/stripe/pay', { data: {
userId: "121",
productId: this.productId,
}, query: { } })
this.paid = paid
},
Вот ошибка, которую я получаю на сервере gin-gonic в go
2018/10/09 00:12:34 [Восстановление] 2018/10/09- 00:12:34 паника восстановлена:
POST / api / v1 / stripe / pay HTTP / 1.1
Хост: localhost: 8080
Принять: application / json, текст / обычный, /
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US, en; q = 0,9
Cache-Control: no-cache
Соединение: keep-alive
Content-Length: 52
Content-Type: application / json; кодировка = UTF-8
Dnt: 1
Источник: http://localhost:3000
Прагма: без кэширования
Ссылка: http://localhost:3000/
Пользователь-агент: Mozilla / 5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 69.0.3497.100 Safari / 537.36
strconv.Atoi: синтаксический анализ "": недопустимосинтаксис
/usr/local/go/src/runtime/panic.go:502 (0x102aca8)
gopanic: reflecall (ноль, unsafe.Pointer (d.fn), deferArgs (d), uint32 (d.siz), uint32 (d.siz))
/Users/joealai/go/src/sovrin-mind-stripe/sm-stripe.go:150 (0x15f9ee5)
BuyProduct: паника (ошибка)
[GIN] 2018/10/09 - 00:12:34 |500 |1,079498мс |127.0.0.1 |POST / api / v1 / stripe / pay