2016-03-30 2 views
-1

クライアントコードがメッセージを含むAJAXリクエストをサーバーに送信します。go - リクエストメッセージ本文のコンテンツを取得するにはどうすればよいですか?

どのようにしてそのリクエストメッセージ本文からデータを読み取ることができますか。

app.post('/api/on', auth.isLoggedIn, function(req, res){ 
       res.setHeader('Access-Control-Allow-Origin', '*'); 
       res.setHeader('Access-Control-Allow-Methods', 'POST'); 
       res.setHeader('Access-Control-Allow-Headers', 'Content-Type'); 

       var url = req.body.url; 
       // Later process 
} 

ゴーでurl = req.body.url同等とは何ですか:NodeJSのExpressでは、私はこれを使うのか?

package main 

import (
    "bytes" 
    "encoding/json" 
    "fmt" 
    "io/ioutil" 
    "net/http" 
) 

func main() { 
    http.HandleFunc("/", Handler) 
    http.ListenAndServe(":8080", nil) 
    // Running in playground will fail but this will start a server locally 
} 

type Payload struct { 
    ArbitraryValue string `json:"arbitrary"` 
    AnotherInt  int `json:"another"` 
} 

func Handler(w http.ResponseWriter, r *http.Request) { 
    body, err := ioutil.ReadAll(r.Body) 
    if err != nil { 
     http.Error(w, err.Error(), http.StatusInternalServerError) 
     return 
    } 

    url := r.URL 
    // Do something with Request URL 
    fmt.Fprintf(w, "The URL is %q", url) 

    payload := Payload{} 
    err = json.NewDecoder(bytes.NewReader(body)).Decode(&payload) 
    if err != nil { 
     http.Error(w, err.Error(), http.StatusInternalServerError) 
     return 
    } 
    // Do something with payload 

} 
+0

私は疑問を誤解していると思います。あなたは、POSTのサーバーハンドラに対応するGoコード、またはクライアントレスポンスを示すGoコードを探していますか? –

+0

@JohnWeldon要求メッセージの本文を取得することを含むPOSTのサーバーハンドラ用のGoコード。 – necroface

答えて

1

Hereは、HTTPハンドラの簡単な例です。

リクエスト本体がJSONの場合は、JSON decoderを使用して、request bodyをJSONの形状に一致する型の値に解析します。

var data struct { 
    URL string 
} 
if err := json.NewDecoder(r.Body).Decode(&data); err != nil { 
    // handle error 
} 
// data.URL is "url" member of the posted JSON object. 
+0

はい、それもうまくいきます。私はこのサンプルの既存のサンプルコードを掘り下げました。 –

+0

ありがとうございます;) – necroface

2

リクエストボディは、URLエンコードされている場合は、リクエストから「URL」の値を取得するためにr.FormValue("url")を使用します。

+0

ありがとうございます;) – necroface

関連する問題