Golang HTTP Package
HTTP Client Package
์ต๊ทผ ํ์ฌ์์ NestJS ๋ฅผ ์ด์ฉํด์ ์ธ๋ถ API๋ฅผ ์ฐ๋ํด์ผ ํ๋ ์ผ๋ค์ด ๋ง์๋ค.
Go ๊ธฐ๋ฐ ์๋ฒ์์๋ ์ธ๋ถ API๋ฅผ ์ด์ฉํ๋ ๋ก์ง์ด ์์ด์, HTTP ์์ฒญ์ ๋ณด๋ด๋ ๊ฒ ์์ฒด๋ฅผ ํจํค์งํํด์ ๊ด๋ฆฌ๋ฅผ ํ๊ณ ์๋๋ฐ, ์ต๊ทผ ๊ฐ์ ๋ ๋ถ๋ถ์ ๋ํด์ ๊ธฐ๋กํ๊ณ ์ ํ๋ค.
๋จผ์ ๊ธฐ์กด์ ์ฝ๋๋ฅผ ๋ณด์.
type WebClient interface {
WebClientMetadata
WebClientFactory
WebClientRequest
}
type WebClientMetadata interface {
URI(uri string) WebClient
QueryParams(values map[string]string) WebClient
Headers(values map[string]string) WebClient
Body(values map[string]string) WebClient
Resp(resp *http.Response, err error) ([]byte, error)
}
type WebClientRequest interface {
Get() ([]byte, error)
Post() ([]byte, error)
Put() ([]byte, error)
Patch() ([]byte, error)
Delete() ([]byte, error)
}
type WebClientFactory interface {
Create() WebClient
}ํฌ๊ฒ ๋ค ๊ฐ์ง์ ์ธํฐํ์ด์ค๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
WebClientFactory ์ธํฐํ์ด์ค๋ ์ต์ด์ WebClient ๊ตฌ์กฐ์ฒด๋ฅผ ์์ฑํ๋ค.
WebClientRequest๋ฅผ ํตํด์ ๊ฐ HTTP Method์ ๋ฐ๋ผ์ Request๋ฅผ Sendํ๋ ๋ก์ง์ด ๋ด๊ธด๋ค.
์์ฒญ์ ํ์ํ Body, Header ๋ฑ์ WebClientMetadata ๋ผ๋ ์ธํฐํ์ด์ค๋ฅผ ํตํด์ value๋ฅผ ๊ตฌ์กฐ์ฒด์ set ํ๊ณ ์๊ธฐ ์์ ์ ๋ฐํํ๋ ๋ฐฉ์์ผ๋ก ์งํ๋๋ค.
๊ฐ๋จํ ์ฌ์ฉ ์์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
์ผ๋จ NestJS์ ์๋ ํจํค์ง๋ฅผ ๊ทธ๋๋ก ๋ฐ์จ ๊ฒ์ด๋ผ์, ๋ญ๊ฐ go ์ค๋ฝ์ง ์๋ค๋ ๋๋๋ ๋ ๋ค.
์ถ๊ฐ๋ก ๋ด๋ถ ๊ตฌํ ์ฝ๋๋ฅผ ๋ณด๋ฉด,
๋ญ๊ฐ ๊ฐ ๋ฉ์๋๊ฐ ๋น์ท๋น์ทํ๊ณ ์ค๋ณต ์ฝ๋๊ฐ ๊ฝค ๋ง์ด ์๋ค.
๋ฆฌํฉํ ๋ง์ ์งํํ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
์ฐ์ Factory interface๋ฅผ ์ญ์ ํ๊ณ , ์ค์ Request๋ฅผ ์ํํ๋ ์ฝ๋๋ฅผ Retrieve()๋ผ๋ ๋ฉ์๋๋ฅผ ์ด์ฉํด์ ํต์ผํ๋ค.
์ฌ์ฉ ์ฝ๋๋ฅผ ๋ณด์.
๋ด ๋์๋ ์กฐ๊ธ ๋์์ง ๊ฒ ๊ฐ์๋ค. ๊ทธ๋๋ ์กฐ๊ธ ๊ฑฐ์ฌ๋ฆฌ๋ ๋ถ๋ถ์ด ์๋ค๋ฉด, URI๋ฅผ ๋ฐ๋ก ๋ฉ์๋๋ฅผ ๊ตฌํํด์ ๊ตณ์ด ์ ๋ ๊ฒ ํธ์ถํด์ผํ ๊น? ํ๋ ๋ถ๋ถ์ด์๋ค.
์์ ๊ฐ์ด ๋ฐ๋์ด์, Method์ ๋ฐ๋ผ์ Request๋ฅผ ์๋ก์ด ๊ต์ฒดํด์ฃผ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
๊ทธ๋ฌ๋ค๋ณด๋ uri๋ฅผ ๊ทธ๋๊ทธ๋ ์ฃผ์ ํด์ค๋ ์๊ด ์์ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ค์๋ค.
์ต์ข ์ ์ผ๋ก๋ ๋ค์๊ณผ ๊ฐ๋ค.
Last updated