Я обновил gin-gonic и хочу использовать его для сохранения формы.
Вот мой код:
import (
"fmt"
"github.com/gin-gonic/contrib/sessions"
"github.com/gin-gonic/gin"
...
func HandlePost(c *gin.Context) {
userId, userName := getUserId(c)
title := c.PostForm("title")
content := c.PostForm("content")
fmt.Println("userId is:", userId) //ok
fmt.Println("userName is: ", userName) //ok
fmt.Println("title is:", title) //empty
fmt.Println("content is: ", content) //empty
...
Я использую Postman для отправки формы, например:
Я не получаю никаких ошибок, но полученные поля формы пусты. Итак, интересно, что здесь может быть не так и как это исправить?
Обновление: вот как я реализовал getUserId
:
func getUserId(c *gin.Context) (int, string) {
var user []model.User
session := sessions.Default(c)
userEmail := session.Get("user-id").(string)
if userEmail == "" {
fmt.Println("userEmail NOT found")
} else {
err := shared.Dbmap.Select(&user, "SELECT * FROM user WHERE email = ? LIMIT 1", userEmail)
if err != nil {
log.Panic(err)
}
}
return user[0].Id, user[0].UserName
}
getUserId
? Я предполагаю, что когда вызывается функцияgetUserId
, она считывает все тело запроса доEOF
, поэтому при доступе к названию и содержимому вы получаете пустое значение. - person putu   schedule 17.07.2017getUserId
. Но даже если я закомментирую вызовgetUserId
, поля формы все равно пусты. - person Karlom   schedule 17.07.2017getUserId
вы не читаете тело запроса. Что, если вы попытаетесь прочитать форму с помощью Context.MultipartForm() (* multipart.Form, ошибка) и обратите внимание наerror
? Вы также можете попытаться просмотреть запрос Postman, чтобы увидеть что именно было отправлено на сервер. - person putu   schedule 17.07.2017c.MultipartForm
вместо этого? - person Karlom   schedule 17.07.2017form, err := c.MultipartForm()
передtitle := c.PostForm("title")
. Обратите внимание на содержание и ошибкуfmt.Printf("%+v, %+v\n", form, err)
. Если ошибки не было, вы можете прочитать значение из multipart.Form.Value. - person putu   schedule 17.07.2017<nil>, invalid URL escape "%\x00\x00"
- person Karlom   schedule 17.07.2017file
в запросе почтальона? Пожалуйста, также проверьте запрос почтальона, чтобы увидеть, что именно было отправлено на сервер. Сообщение об ошибке указывает, что запрос недействителен. - person putu   schedule 17.07.2017curl -X POST -v --cookie "mycookename=somelonggibberish" -F 'title=mytitle' -F 'content=mycontent' http://127.0.0.1:8080/api/post
- person Karlom   schedule 17.07.2017