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
にすればリクエストサイズの制限はなくなります。
Read other posts