GoでJSONをPOSTしてDjangoで受信してみる

最近Goglandのプレビュー版でコーディングを行っていますが、やっぱりJetBrainsのIDEはいいですね。

おかげで乏しかったGoプロ力が少しずつ付いてきている気がします。


さて、表題の通りですがGoでJSONをPOSTしたい時がありまして、調査も兼ねてテストしてみました。

受信するのはDjangoで、テストのためCSRFは検証しない設定にしています。

参考

コード

Go

package main

import (
    "net/http"
    "fmt"
    "bytes"
)

func main() {
    jsonStr := "{}"

    req, err := http.NewRequest(
        "POST",
        "http://localhost:8000/test",
        bytes.NewBuffer([]byte(jsonStr)),
    )
    if err != nil {
        fmt.Println(err)
    }

    // Content-Type 設定
    req.Header.Set("Content-Type", "application/json")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        fmt.Println(err)
    }
    defer resp.Body.Close()
}

Django (views.py)

@csrf_exempt
def test(request):
    if request.method == "POST":
        params = json.loads(request.body.decode())
        print(params)
    return HttpResponse("OK")

request.POST[“data”]をクライアント側に設定するみたいな記事も多かったのですが、content-typeを設定しているのですからrequest.bodyから読むのが筋と思いこのような方法を取っています。

あとbyte型はstr()で変換できないという事を忘れてちょっとハマってしまったorz

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です