일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Chakra
- react-hook-form
- 웹애플리케이션서버
- golang
- Redux
- tanstackquery
- 티스토리챌린지
- JavaSpring
- satisfiles
- RTK
- javascript
- designpatterns
- java
- go
- Spring
- 오블완
- ReactHooks
- backend
- hook
- JPA
- css
- springboot
- Gin
- storybook
- frontend
- typescript
- test
- component
- React
- Today
- Total
목록Gin (5)
bkdragon's log
paging 이 추가된 API를 만들어보려고 한다. gin Clean Architecture 에서 사용하는 기본 CRUD repository 처럼 Paging respository 를 만들고 필요한 도메인에 임베드(상속)로 추가할 수 있게 만들 것이다.우선 인터페이스를 정의해준다.type IRepository[M any, ID any] interface { List() ([]*M, error) Retrieve(id ID) (*M, error) Save(entity *M) (*M, error) Update(id ID, updates map[string]interface{}) (*M, error) Delete(id ID) error}type IPagingRepository[..
데이터베이스에 접근하는 respository layer,비지니스 로직을 수행하는 service layer,요청을 해석하는 controller layer로 계층을 분리할 것이다.우선 가장 기본 CRUD 만 있는 인터페이스를 만들고 구현체를 만든다.type IRepository[M any, ID any] interface { List() ([]*M, error) Retrieve(id ID) (*M, error) Save(entity *M) (*M, error) Update(id ID, updates map[string]interface{}) (*M, error) Delete(id ID) error}DataBase 구조체를 만들어서 IRepository 인터페이스를 구현한다...
net/http를 활용한 golang 서버에서 요청을 받아서 처리하는 순서를 간단하게(디테일 X) 살펴보려고 한다.http 패키지의 HandleFunc로 request handler를 등록하고 ListenAndServe로 실행하면 요청에 맞는 handler가 실행된다.http.HandleFunc("/helloworld", helloWorldHandler)http.ListenAndServe(fmt.Sprintf(":%v", port), nil)ListenAndServe 함수는 다음과 같다.func ListenAndServe(addr string, handler Handler) error { server := &Server{Addr: addr, Handler: handler} return serv..
gin Context 에 있는 JSON 메서드는 json 응답을 빼주는 데 사용한다. 내부 구현을 살펴보자. func (c *Context) JSON(code int, obj any) { c.Render(code, render.JSON{Data: obj})}JSON 은 Render라는 메서드를 호출하는데, 상태 코드와 render.JSON을 구조체를 인자로 받는다. c.Render를 먼저 살펴보면func (c *Context) Render(code int, r render.Render) { c.Status(code) if !bodyAllowedForStatus(code) { r.WriteContentType(c.Writer) c.Writer.WriteHeaderN..
gin 의 Context 에 있는 ShouldBindJSON 메서드는 JSON 데이터를 구조체로 바꿔주는 역할을 한다. 아마 요청을 읽고 Unmarshal 하는 과정이 있지 않을까 싶은데 실제 구현이 궁금해서 코드를 좀 찾아보았다.func (c *Context) ShouldBindJSON(obj any) error { return c.ShouldBindWith(obj, binding.JSON)}func (c *Context) ShouldBindWith(obj any, b binding.Binding) error { return b.Bind(c.Request, obj)}ShouldBindJSON 는 ShouldBindWith 를 호출한다. ShouldBindWith 는 Binding 구조체와 o..