最近GoをAPI Gateway(Aggregator)としている環境で開発を行なっているのですが、呼び出し先のServiceの実装が終わっていなくてもClientでとりあえずJSONのresponseが欲しいという状況がありました。
JSONのUnmarshalについてはgolangはゆるふわにJSONを扱えまぁす!という記事が有ったのですが、ゆるふわMarshalについては情報がありませんでした。
ですが考えてみればjson.Marshal()すると[]byte
型になるのでそれを初めから作ってあげればよかったです。
まあもちろんこれではGoの良いところを捨てているようなものですが、開発中のとりあえずのレスポンスには手軽で良いと思いました。
package main import ( "fmt" "net/http" ) func jsonResponse(rw http.ResponseWriter, req *http.Request) { response := []byte(` { "status": "success", "user": { "id": "2d7b8fe1-1e63-4c3b-83b9-46274554e822", "name": "t-hiroyoshi", "birthday": "1993-09-06T11:22:33.496Z" } } `) defer func() { rw.Header().Set("Content-Type", "application/json") fmt.Fprint(rw, string(response)) }() } func main() { http.HandleFunc("/json", jsonResponse) http.ListenAndServe(":8080", nil) }
|