Я начинаю разрабатывать REST API, используя Go и пакет Gin-Gonic. Идея состоит в том, чтобы создать REST API, который принимает запросы POST в формате JSON и перенаправляет этот вызов в другое приложение (также API). Вот кусок кода:
package main
import (
"fmt"
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
r := gin.Default()
r.GET("/status", func(c *gin.Context) {
c.String(200, "on")
})
r.GET("/user/:name", func(c *gin.Context) {
name := c.Param("name")
c.String(http.StatusOK, "Hello %s", name)
})
r.GET("/user/:name/:action", func(c *gin.Context) {
name := c.Param("name")
action := c.Param("action")
message := name + " is " + action
c.String(http.StatusOK, message)
})
r.POST("/foo", func(c *gin.Context) {
fmt.Printf("%s", "At least I got here")
message := c.PostForm() //???
c.JSON(200, gin.H{"status": message}) //???
})
r.Run(":8080") // listen an
}
В функции r.Posts("/foo",...)
я хочу, чтобы c.JSON
отправил мне обратно полный JSON, который я отправил:
curl -H "Content-Type: application/json" -X POST -d '{"user":"xyz","password":"xyz"}' http://localhost:8080/foo
Я видел примеры, в которых они связывают файл JSON, создавая структуру с той же структурой, что и входной JSON (см. Примеры Gin-Gonic на https://github.com/gin-gonic/gin). Однако мне нужно только повторно отправить полную строку, не заботясь о формате. Любые идеи?