2017-03-31 2 views
-1

메소드, URI, 쿼리 매개 변수, 헤더, 본문과 같은 부분으로 나뉘어 진 HTTP 요청 표현이 있다고 가정 해보십시오.구성 요소를 기반으로 HTTP 요청을 작성하십시오.

Method: POST 
Headers: [Content-Type: application/json, Host: localhost:8080, etc...] 
Path: /home/sweet 
Query: name=dan&id=1 
Body: "some JSON here" 

가 어떻게 유효한 그물/HTTP 요청 객체에이를 재 구축 할 수 있습니다 :

그래서 내가 좋아하는 뭔가가있을 수 있습니다? 가능한 한 문자열 서식 및 건물을 피하고 싶습니다.

답변

4

실제로는 http.Request을 만드는 유일한 방법은 http.NewRequest입니다. 그리고 이미 구성 요소 중 세 가지를 인수로 취합니다 : 메서드, 경로 및 본문.

NewRequest을 호출하기 전에 검색어 매개 변수를 URL에 조합해야합니다. url 패키지, 특히 url.Values이 도움이 될 수 있습니다.

req, err := http.NewRequest("GET", "http://example.com/?foo=bar", body) 
req.Header.Add("Content-Type", "application/json") 

을 그리고 진술 필요로하는 경우에, 몸은 io.Reader해야합니다,하지만 당신에게 완벽한 유연성을 제공 :

새 요청이 있으면 당신이 기대하는 것처럼, 당신은 헤더를 추가 할 수 있습니다.

+0

가능한 경우 문자열 작성을 피하는 것이 좋았을 것입니다. 귀하의 예제에서는 경로와 호스트 헤더를 연결하고 체계를 추가해야합니다. – Dumitru

+0

'url' 패키지가 도움이 될 것입니다. 그것은 당신을 위해 URL 인코딩/연결을 할 수 있습니다. 그것이 더 쉬운 지 여부는 쿼리 매개 변수를받는 방법에 따라 달라질 수 있습니다. – Flimzy

관련 문제