Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- perfect
- STF_PortForwarding
- Jupyter Notebook
- nGrinder
- SWIFT
- Jupyter
- mysql
- 28015
- 실행권한
- nmap
- insert
- postgresql
- rethinkdb
- appium server
- nohup
- sshpass
- create table
- ubuntu
- STF
- kitura
- postgres
- port forwarding
- GoCD
- Materials
- ftp
- PYTHON
- ssh
- openpyxl
- appium
- centos
Archives
- Today
- Total
don't stop believing
Grouping routes 본문
이번에는 route를 그룹핑하는 기능입니다.
https://github.com/gin-gonic/gin#grouping-routes
사용은 간단합니다. 하위 그룹으로 묶을 route를 Group()으로 묶으면 됩니다.
바로 예제 코드를 보면 아래와 같습니다.
package main import ( "github.com/gin-gonic/gin" ) func setupRouter() *gin.Engine { // Disable Console Color // gin.DisableConsoleColor() r := gin.Default() // Simple group: v1 v1 := r.Group("/v1") { v1.POST("/login", loginEndpoint) v1.POST("/submit", submitEndpoint) v1.POST("/read", readEndpoint) } // Simple group: v2 v2 := r.Group("/v2") { v2.POST("/login", loginEndpoint) v2.POST("/submit", submitEndpoint) v2.POST("/read", readEndpoint) } return r } func loginEndpoint(c *gin.Context) { getPath := c.Request.URL.String() c.JSON(200, gin.H{ "pathInfo": getPath, }) } func submitEndpoint(c *gin.Context) { getPath := c.Request.URL.String() c.JSON(200, gin.H{ "pathInfo": getPath, }) } func readEndpoint(c *gin.Context) { getPath := c.Request.URL.String() c.JSON(200, gin.H{ "pathInfo": getPath, }) } func main() { r := setupRouter() // Listen and Server in 0.0.0.0:8080 r.Run(":8080") }
API를 개발할 때 버전별로 구분할 경우를 예로든 코드입니다.
v1과 v2로 구분하고 싶을때 사용할 수 있습니다.
v1 := r.Group("/v1")
{
v1.POST("/login", loginEndpoint)
v1.POST("/submit", submitEndpoint)
v1.POST("/read", readEndpoint)
}
v1과 동일한 uri인 경우 아래처럼 v2만들어 줍니다.
v2 := r.Group("/v2")
{
v2.POST("/login", loginEndpoint)
v2.POST("/submit", submitEndpoint)
v2.POST("/read", readEndpoint)
}
v1과 v2 하위 path는 동일합니다.
이제 서버를 실행하고 확인해 봅니다.
$ go run ./example/server.go [GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached. [GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production. - using env: export GIN_MODE=release - using code: gin.SetMode(gin.ReleaseMode) [GIN-debug] POST /v1/login --> main.loginEndpoint (3 handlers) [GIN-debug] POST /v1/submit --> main.submitEndpoint (3 handlers) [GIN-debug] POST /v1/read --> main.readEndpoint (3 handlers) [GIN-debug] POST /v2/login --> main.loginEndpoint (3 handlers) [GIN-debug] POST /v2/submit --> main.submitEndpoint (3 handlers) [GIN-debug] POST /v2/read --> main.readEndpoint (3 handlers) [GIN-debug] Listening and serving HTTP on :8080
Post method이기 때문에 Postman을 사용해 호출해 봅니다.
먼저 v1/login을 호출해 봅니다.
이번에는 v2/login입니다.
v1과 v2로 그룹핑되서 잘 보이네요.
'Golang > Gin' 카테고리의 다른 글
mysql curd (with Gin) (0) | 2019.03.06 |
---|---|
[swag] Gin에서 Swagger 사용하기 (0) | 2019.03.04 |
Upload files (0) | 2019.02.27 |
Map as querystring or postform parameters (0) | 2019.02.27 |
Another example: query + post form (0) | 2019.02.15 |
Comments