Documentation ¶
Overview ¶
gin_restful 은 gin 을 이용한 restful api 를 간편하게 만들기 위한 extension 입니다. go 언어로 restful api 를 더 편하게 만들고 싶어 개발하였습니다.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NotBlankValidate ¶
func NotBlankValidate(fl validator.FieldLevel) bool
구조체 필드에 `binding:"notblank"` 과 같이 사용합니다.
Types ¶
type Api ¶
type Api struct { App *gin.RouterGroup Prefix string Resources map[string]interface{} }
Api 구조체는 Resource 인스턴스들을 관리하고 gin 서버에 등록하기 위한 구조체입니다. NewApi 함수로 인스턴스를 생성하여 사용합니다. AddResource 함수로 Api 인스턴스에 Resource 를 등록할 수 있습니다.
func NewApi ¶
Api 구조체의 인스턴스를 인스턴스를 생성하여 포인터로 반환하는 함수입니다. 첫번째 인자 app(type: *gin.Engine)은 Resource 를 등록 할 gin 서버의 인스턴스입니다. 두번째 인자 prefix(type string)은 api url 의 제일 앞 부분에 붙습니다.
func (*Api) AddResource ¶
Api 인스턴스에 새로운 Resource 를 등록하는 메서드입니다. Api 의 필드 App 이 nil 이 아니라면 gin 서버에 즉시 등록하고 nil 이라면 Api 구조체에 잠시 저장합니다. 서버에 등록할 때는 Resource 의 메서드 중 http method 인 것을 찾아 인자를 파싱하여 url 을 생성합니다. 요청을 받았을때 메서드가 실행되며 각각의 인자는 자동으로 채워집니다. string, int, float, bool 타입의 인자는 url 에서 파싱하여 전달합니다. *gin.Context 타입의 인자는 해당 요청의 context 로 채워집니다. 구조체 타입의 인자는 하나만 존재할 수 있으며 요청의 body 를 파싱하여 채워집니다.
func (*Api) GetHandlersChain ¶
func (a *Api) GetHandlersChain() gin.HandlersChain
Api 인스턴스에 등록된 Resource 의 Handler 들을 gin.HandlerChain 타입으로 반환하는 메서드입니다.
type ApplicationError ¶
func (ApplicationError) Error ¶
func (e ApplicationError) Error() string
type Resource ¶
type Resource struct {
Middlewares map[string][]gin.HandlerFunc
}
Resource 는 기본적으로 Api 인스턴스에 등록 가능한 Resource 의 형태입니다. 각 Handler 에 적용될 Middleware 들을 포함합니다. Resource 포인터를 임베딩하여 사용할 수 있지만 Middleware 가 필요없다면 임베딩 하지 않아도 무방합니다. Resource 포인터를 임베딩할 때 InitResource 함수를 사용합니다. Resource 에 Handler 를 등록할 때는 사용할 http 메서드와 같은 메서드를 정의하면 됩니다. Handler 의 이름으로는 Get, Post, Put, Patch, Delete 등을 사용할 수 있습니다. Handler 이름의 첫글자는 무조건 대문자여야합니다. Handler 의 에는 *gin.Context, string, int, float, bool, struct 타입의 인자를 사용할 수 있습니다. Resource 를 서버에 등록할 때는 Resource 의 메서드 중 http method 인 것을 찾아 인자를 파싱하여 url 을 생성합니다. 요청을 받았을때 메서드가 실행되며 각각의 인자는 자동으로 채워집니다. *gin.Context 와 struct 를 제외한 인자는 path variable 이 됩니다. *gin.Context 타입의 인자는 해당 요청의 context 로 채워집니다. 구조체 타입의 인자는 하나만 존재할 수 있으며 요청의 body 를 파싱하여 채워집니다.
func InitResource ¶
func InitResource() *Resource
Resource 구조체를 초기화하여 포인터로 반환해주는 함수입니다. 새로운 Resource 구조체를 정의하여 사용할 때 Resource 를 임베딩 하기 위해 사용합니다.
func (*Resource) AddMiddleware ¶
func (r *Resource) AddMiddleware(middleware gin.HandlerFunc, methods ...string)
Resource 인스턴스에 각 http method 에 사용할 Middleware 를 등록하는 메서드입니다. methods 는 사용가능한 http method 의 이름과 같아야 합니다.