goa で HTTP リクエストボディサイズの上限値を変更する

goa の API サーバに 1GB を超える HTTP リクエストを送信すると、http: request body too large のようなエラーが発生します。 これは net/http の MaxBytesReader が返すエラーですが、 その設定をどこで行っているのか見つけるのに少し苦労したのでメモしておきます。

goa 1.3.1 では、https://github.com/goadesign/goa/blob/v1/service.go#L55-L57 に HTTP リクエストボディサイズに関する記述があります。 MaxRequestBodyLength という変数があるので、これを変更すれば OK です。 デフォルトでは 1GB までとなっているので、 2GB にした場合は main 関数内に以下のように書きます。

service := goa.New("test-api")
t := NewTestController(service)
t.MaxRequestBodyLength = int64(2 * 1024 * 1024 * 1024)

service.go のコメントにも書いてあるとおり、 MaxRequestBodyLength = 0 にすればリクエストサイズの制限はなくなります。

comment

Comments

arrow_back

Previous

Vegeta で multipart/form-data のリクエストを送る

Next

embulk の resume-state と config-diff の検証結果
arrow_forward