Go/Go - web
Go - Response body 를 Close 해야하는 이유
Go - Response body 를 Close 해야하는 이유
2022.04.26Go HTTP 클라이언트는 응답 상태와 헤더를 Network socket 으로 부터 읽고, 읽은 데이터는 응답 객체에서 바로 사용할 수 있습니다. 하지만 클라이언트가 자동으로 Response body를 읽지는 않습니다. Response body는 명시적으로 코드상에서 읽기 전까지는 소비되지 않은 상태로 남아 있으며, Response body를 닫게되면 읽지 않은 바이트를 그대로 소비합니다. Go HTTP 클라이언트가 socket을 닫을 때 암묵적으로 Response Body를 소비하는 것이 잠재적으로 문제가 될 수 있습니다. 예를 들어, GET method 로 파일을 요청하고 서버로부터 응답을 받았습니다. 응답의 Content-Length 헤더를 읽었는데, 파일이 기대한 것보다 훨씬 크다는 것을 알았습니..
Go - 입금 및 출금 API 구현 하기 (transaction && rollback)
Go - 입금 및 출금 API 구현 하기 (transaction && rollback)
2021.10.11banking app 에서 customer id 와 account id 를 받아서 돈을 입금 또는 출금 하는 API 를 만들어 보겠습니다. Router Handler 만들기 router.HandleFunc("/customers/{customer_id:[0-9]+}/account/{account_id:[0-9]+}", ah.MakeTransaction). Methods(http.MethodPost) customer id 와 acccount id 를 정규표현식으로 숫자만 받도록 정의하고 AccountHandler 객체를 만들고 MakeTransaction 을 HandleFunc 로 등록 했습니다. Db 객체와 Handler 객체를 각각 파라미터로 의존성 주입하는 형태로 코딩을 하여 테스트 또는 변경되는 사항..
Go - Restful 하게 micro web service 만들기
Go - Restful 하게 micro web service 만들기
2021.10.10도메인에서 DB Table 1:1 구조체 만들기 저장소 Interface 만들기 해당 RepositoryDB 에 receive 함수 구현하기 DTO 정의하기 POST method 가 왔을 때 Request 로 받는 값 정의, Response 로 Client 에게 응답 값 정의 Service 구현 Service 는 Handler 를 통해 DTO(Request dto) 를 받아서 domain tpye 으로 repository 에 값을 처리하고 Response dto 로 Handler 에게 처리된 값을 넘긴다. Account Service Interface 구현 AccountService 는 Handler 에서 직접 구현 NewAccountService는 app.go 에서 Handler func로 사용 han..