[BUG] Can no longer return 304 with empty string as body - get 500 internal server error
kschuetz opened this issue · comments
Tapir version: 1.10.5
Scala version: 3.3.1
Describe the bug
I have some endpoints in my application whose implementations sometimes return a 304 with an empty string as a body.
I have upgraded tapir recently (from 1.2.13 to 1.10.5), and as of this commit, those endpoints no longer work:
2380053
Whenever the endpoints attempt to return a 304, I get a 500 Internal Server Error instead.
It looks like the cause is this line:
case (StatusCode.NoContent | StatusCode.NotModified, Some(_)) => monad.error(new IllegalStateException(s"Unexpected response body when status code == $statusCode"))
Is there any way to disable this check or get around it? I won't be able to change the API contract of my application.
As a temporary workaround, I made my endpoints return 399 and added an interceptor at the top level to convert 399s to 304s.
I think it's the same problem as #3682
Since this is problematic, let's simply remove this check.
Appreciate the quick response!
Still looking for somebody to create the PR, just in case :)