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