softwaremill / tapir

Rapid development of self-documenting APIs

Home Page:https://tapir.softwaremill.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[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 :)