Go gin-framework: тестирование запроса и POST с помощью cURL
Я пытаюсь пример кода в README из gin Framework ("Другой пример: запрос + форма сообщения"):
package main
import (
"fmt"
"github.com/gin-gonic/gin"
)
func main() {
router := gin.Default()
router.POST("/post", func(c *gin.Context) {
id := c.Query("id")
page := c.DefaultQuery("page", "0")
name := c.PostForm("name")
message := c.PostForm("message")
fmt.Printf("id: %s; page: %s; name: %s; message: %s\n", id, page, name, message)
})
router.Run(":8080")
}
Тестирование кода с помощью cURL:
curl -d "name=Maru&message=Nice" 0.0.0.0:8080/post?id=2&page=3
Сервер возвращает: id: 2; page: 0; name: Maru; message: Nice
,
Является ли проверка на скручивание правильной? Почему нет page
в возвращаемом значении, равном 3?
1 ответ
Решение
Амперсанд (&
) - это специальный символ в вашей оболочке. Это заставляет предыдущую команду работать в фоновом режиме. Ваша оболочка интерпретировала команду как:
curl -d "name=Maru&message=Nice" 0.0.0.0:8080/post?id=2 & # run curl in the background
page=3 # set page=3
Побег персонажа даст вам ожидаемый результат:
curl -d "name=Maru&message=Nice" "0.0.0.0:8080/post?id=2&page=3"
curl -d "name=Maru&message=Nice" 0.0.0.0:8080/post?id=2\&page=3