-
[Gin Gonic] Gin Gonic 에서 Query String 처리 방법 알아보기Golang/Gin Gonic 2024. 6. 11. 06:35728x90반응형
- 목차
들어가며.
Gin Gonic 은 Go 언어 기반의 고성능 웹 프레임워크로, 간결하면서도 강력한 기능을 제공합니다.
Gin Gonic 은 gin.Context 구조체를 통해서 Query String 을 간단하고 효율적으로 처리할 수 있는 메서드들을 제공합니다.
이번 글에서는 Query String 처리 방법과 관련된 다양한 사례를 살펴보겠습니다.
Query String 처리하는 주요 메소드 알아보기.
Gin Gonic 에서는 Middleware 와 Handler 에서 요청 URL 의 Query String 을 처리합니다.
그리고 이 처리 과정에서 gin.Context 구조체가 활용됩니다.
일반적으로 Gin Gonic 의 Query String 을 처리하는 전반적인 기능은 gin.Context 구조체의 메소드로 구현되어 있다고 생각하셔도 무방합니다.
gin.Context Query
gin.Context 는 기본적으로 Query 메소드를 제공합니다.
Query 메소드의 시그니처는 아래와 같습니다.
func (c *Context) Query(key string) string
그리고 gin.Context 의 Query 메소드의 활용 예시는 아래와 같습니다.
주의할 점은 Query Key 가 존재하지 않는 경우에는 빈 string 이 반환되게 됩니다.
package main import ( "github.com/gin-gonic/gin" ) func main() { r := gin.Default() r.GET("/search", func(c *gin.Context) { // "q" 키의 쿼리 값을 가져오기 query := c.Query("q") limit := c.Query("limit") // 응답 반환 c.JSON(200, gin.H{ "query": query, "limit": limit, }) }) r.Run(":8080") }
HTTP 요청 예문은 아래와 같습니다.
curl 'http://localhost:8080/search?q=test&limit=10' # {"limit":"10","query":"test"}
curl 'http://localhost:8080/search?q=test' # {"limit":"","query":"test"}
gin.Context DefaultQuery.
gin.Context 의 Query 메소드는 존재하지 않는 Query Key 를 조회하게 되면 빈 string 이 반환됩니다.
반면 DefaultQuery 메소드는 존재하지 않는 Query Key 에 대해서 기본값을 적용시킬 수 있습니다.
DefaultQuery 메소드의 시그니처는 아래와 같습니다.
func (c *Context) DefaultQuery(key, defaultValue string) string
gin.Context 의 DefaultQuery 메소드 활용 예시는 아래와 같습니다.
package main import ( "github.com/gin-gonic/gin" ) func main() { r := gin.Default() r.GET("/search", func(c *gin.Context) { // "q" 키의 쿼리 값을 가져오기 query := c.Query("q") limit := c.DefaultQuery("limit", "10") // 응답 반환 c.JSON(200, gin.H{ "query": query, "limit": limit, }) }) r.Run(":8080") }
위 예시에서 "limit" Query Key 에 대해서 Default Value 를 10 으로 설정하였습니다.
따라서 아래와 같이 "limit" Query Key 이 존재하지 않더라도 기본값인 10 이 출력됩니다.
curl 'http://localhost:8080/search?q=test' # {"limit":"10","query":"test"}
gin.Context GetQuery.
GetQuery 메소드는 다른 Query 메소드와 유사하게 특정 Query Key 를 추출합니다.
하지만 Query 와 DefaultQuery 는 존재하지 않는 Query Key 에 대해서 빈 string 값이나 Default Value 를 반환하지만,
GetQuery 메소드는 존재하지 않는 Query Key 에 대해서 결과값을 반환하지 않습니다.
GetQuery 시그니처는 아래와 같습니다.
2개의 반환값이 제공되며, 두번째 반환값인 bool 을 통해서 Query Key 의 존재 유무를 반환합니다.
func (c *Context) GetQuery(key string) (string, bool)
아래의 코드는 gin.Context 의 GetQuery 메소드의 활용 예시입니다.
package main import ( "github.com/gin-gonic/gin" ) func main() { r := gin.Default() r.GET("/check", func(c *gin.Context) { value, exists := c.GetQuery("key") if exists { c.JSON(200, gin.H{"key": value}) } else { c.JSON(400, gin.H{"error": "Key not found"}) } }) r.Run(":8080") }
"key" 인 Query Key 가 존재하지 않는 경우에는 아래와 같이 동작하게 됩니다.
curl 'http://localhost:8080/check?q=test' # {"error":"Key not found"}
반면 "key" 인 Query Key 가 존재하는 경우에는 아래와 같이 동작합니다.
curl 'http://localhost:8080/check?key=test' # {"key":"test"}
반응형'Golang > Gin Gonic' 카테고리의 다른 글
[Gin Gonic] API Routing 설정하기 (0) 2024.06.09