2016-04-23 2 views
0

Я пытаюсь примером кода в the README of gin framework ("Еще один пример: запрос + запись форме"):Go джин-основа: Тестирование запросов и POST с Curl

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 -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?

ответ

0

Амперсанд (&) - специальный символ в вашей оболочке. Это приводит к тому, что предыдущая команда запускается в фоновом режиме. Ваша оболочка интерпретации команды как:

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