golang Gin - GET, POST

김영한·2021년 5월 11일
1

Go

목록 보기
6/6

go get -u "github.com/gin-gonic/gin"

기본적인 GET, POST Method 예시이다.

package main

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"

	"github.com/gin-gonic/gin"
)

func HomePage(c *gin.Context) {
	c.JSON(http.StatusOK, gin.H{
		"message": "홈페이지 입니다.",
	})
}

func PostHomePage(c *gin.Context) {
	body := c.Request.Body
	value, err := ioutil.ReadAll(body)
	if err != nil {
		fmt.Println(err.Error())
	}

	var data map[string]interface{}
	json.Unmarshal([]byte(value), &data) // JSON을 Go언어 자료형으로 변환(여기서는 map으로 변환)
	c.JSON(http.StatusOK, gin.H{
		"name": data["name"],
		"age":  data["age"],
	})

	doc, _ := json.Marshal(data) // Go언어 자료형을 JSON으로 변환(여기서는 map을 JSON으로 변환)
	// doc == value
	c.String(http.StatusOK, string(doc))
}

func QueryString(c *gin.Context) {
	name := c.Query("name")
	age := c.Query("age")

	c.JSON(http.StatusOK, gin.H{
		"name": name,
		"age":  age,
	})
}

func PathParameter(c *gin.Context) {
	name := c.Param("name")
	age := c.Param("age")

	c.JSON(http.StatusOK, gin.H{
		"name": name,
		"age":  age,
	})
}

func main() {
	r := gin.Default()
	r.GET("/", HomePage)
	r.POST("/", PostHomePage)
	/* body
	{
		"name": "young",
		"age" : "25"
	}
	*/

	r.GET("/query", QueryString)             // /query?name=young&age=25
	r.GET("/path/:name/:age", PathParameter) // /path/young/25
	r.Run(":8080")
}

0개의 댓글