-
ํจํค์ง ์ค์น :
go get github.com/valyala/fasthttp
-
document ์ ์ฐธ๊ณ ํด์ ์ํ๋ ํจ์ ์ ํ์ฉ ํ ๊ฒ.
- ctx.Response.SetBody๋ ctx.Response WriteTo ๋๋ค ์ฌ์ฉํด์ body๋ header๊ฐ ๋์์ ๋ณด๋ด์ก์์
- ํจ์ ๋์์ ์ ํ์ธํ๊ณ ์ฌ์ฉํด์ผ ๋จ
ctx.Response.SetBody
ctx.Response.WriteTo
- SetBody vs SetBodyString ์ฑ๋ฅ ๋น๊ต ๊ด๋ จ issue #722
- func Do(req * Request, resp * Response) error
- ์ ๋ ฅ๋ฐ์ request๋ฅผ ์ํํ๊ณ , ํด๋น request์ ๋ํ response๋ฅผ ๋ฐ์.
- ์ ๋ ฅํ reqeust์๋ ์ ์ฒด url์ด ํฌํจ๋์ด์ผํจ.
- func DoDeadline(req * Request, resp * Response, deadline time.Time) error
- Do ํจ์์ ๋์ + ์ ๋ ฅ๋ฐ์ deadline๊น์ง response๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ํจ์.
- func DoRedirects(req * Request, resp * Response, maxRedirectsCount int) error
- Do ํจ์์ ๋์ + maxRedirectsCount ๋ฆฌ๋๋ ์ ์ ๋ฐ๋ผ ์ง์ ๋ response๋ฅผ ๋ฐํ๋จ.
- ๋ฆฌ๋๋ ์ ์๊ฐ ์ง์ ํ maxRedirectsCount๋ฅผ ์ด๊ณผํ ์, ErrTooManyRedirects(error) ๋ฐํ๋จ.
- func DoTimeout(req * Request, resp * Response, timeout time.Duration) error
- Do ํจ์์ ๋์ + ์ ๋ ฅ๋ฐ์ timeout๊น์ง response๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ํจ์.
- ํด๋น timeout๊น์ง response๊ฐ ๋ฐํ๋์ง ์์ผ๋ฉด ErrTimeout(error)์ด ๋ฐํ๋จ.
- ctx.QueryArgs().Peek()
- (์) HTTP POST๋ก
http://localhost:8080/user?name=sujin
๊ณผ ๊ฐ์ด ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ฆด ๋, key(name)์ ํด๋นํ๋ value๋ฅผ ์ถ์ถํ๋ ค๋ฉด? - ์ด๋ ์ฌ์ฉ๋๋ ํจ์๋ก, ์ฟผ๋ฆฌ์ ๋ํด ํน์ ํค ๊ฐ์ ๋ํด ์ ๋ ฅํ Value ๊ฐ์ ๊ฐ์ ธ์ค๋ ํจ์
- (์) HTTP POST๋ก
- ctx.UserValue()
- (์) HTTP GET์ผ๋ก
http://localhost:8080/user/{name}
๊ณผ ๊ฐ์ด ๋ผ์ฐํ ์ค์ ๋ ์๋ฒ์ ๋ํดhttp://localhost:8080/user/sujin
์ผ๋ก ๊ฐ์ ์ ๋ ฅํ ๋, ์ ๋ ฅ๋ ๊ฐ์ ์ถ์ถํ๋ ค๋ฉด? - ์ด๋ ์ฌ์ฉ๋๋ ํจ์๋ก, ์ฌ์ฉ์๊ฐ HTTP GET Method๋ฅผ ํตํด ์ ๋ ฅํ ํน์ ํค ๊ฐ์ ๋ํด value๋ฅผ ๊ฐ์ ธ์ค๋ ํจ์
- (์) HTTP GET์ผ๋ก
-
error when reading request headers cannot find http request method
- defer releaseResponse(resp * Response) ์ฌ์ฉํ ์์น ๋๋ฌธ์ ๋ฐ์ํ๋ ์๋ฌ๋ก ๋ณด์
- golang fasthttp package์ ๋ฐ๋ฅด๋ฉด, releaseResponse ํจ์ ์ ์ธํ์๋ง์ response์ ์ ๊ทผ๋ถ๊ฐํ ๊ฒ์ผ๋ก ์ ํ์์
- ์ฆ, releaseResponse ํจ์ ๋ค์๋ Response ๊ฐ์ ์ ๊ทผ ๋ถ๊ฐ(Response ํ์ธ ๋ค ์๋ฃ๋ ๋ค์์ ํด๋นํจ์ ์ฌ์ฉํ ๊ฒ)
- golang ReleaseRequest(req * Request) ๋ ๋ง์ฐฌ๊ฐ์ง์
- ์ฐธ๊ณ ํ golang fasthttp package Reference ๋งํฌ
- ๋์ผํ ์๋ฌ์ ๋ํ ๋ค๋ฅธ ์๊ฒฌ(stackoverflow ๋งํฌ)
- github golang/fasthttp issue #159
- defer releaseResponse(resp * Response) ์ฌ์ฉํ ์์น ๋๋ฌธ์ ๋ฐ์ํ๋ ์๋ฌ๋ก ๋ณด์
-
...ing
- ๊ด๋ จ ์ด์ ๋ฐ์/ํ์ ์, ์ฐธ๊ณ ํ๋ ๊ธโจ
- response body ๊ด๋ จ : github valyala/fasthttp issue #411
- POST method ์ธํ ๊ด๋ จ : github valyala/fasthttp issue #202
- POST method ์ก์ ๊ด๋ จ : github valyala/fasthttp issue #558
- GO fasthttp document ๐