結果を返す時、ResponseWriter型なので本文しか返せない?と思ってしまいますが、ヘッダー、ちゃんと返せます。
package main
import (
"fmt"
"net/http"
)
func rootHandler(w http.ResponseWriter, req *http.Request) {
// 独自ヘッダを先に付けて
w.Header().Set("x-moke-token", "token!!!!")
// この後ステータスコード
w.WriteHeader(201)
// そして本文
fmt.Fprintf(w, "Moke server")
}
func main() {
http.HandleFunc("/", rootHandler)
http.ListenAndServe(":8080", nil)
}
curlで実行してみましょう。
$ curl -v -X POST 'http://localhost:8080'
< HTTP/1.1 201 Created
< X-Moke-Token: token!!!!
< Date: Tue, 01 Jul 2014 07:50:54 GMT
< Content-Length: 11
< Content-Type: text/plain; charset=utf-8
<
Moke server
ちゃんと返ってきました。「ヘッダが付与されない!」とか、「ステータスコードが変わらない!」という方は順序をもう一度確認してみましょう。