2017-03-31 5 views
-1

HTTPリクエストの表現は、メソッド、URI、クエリパラメータ、ヘッダー、本文などに分解されています。構成部分に基づいて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を作成する方法は1つで、http.NewRequestです。そして、それはすでに引数として3つの構成部分を取ります:メソッド、パス、およびボディ。

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

関連する問題