Open mathis-m opened 4 years ago
Just ran into this with a file upload API that had an object part for some metadata. The whole proposed solution here would of course be great, but just setting the content types of the request parts based on the schema properties (that is, the last bullet point in the described solution) would be helpful even without any new elements in the UI.
To help anyone else who is searching the web for this problem: it was manifesting in Spring MVC as HttpMediaTypeNotSupportedException: Content type 'application/octet-stream' not supported
. A workaround is to write a custom HttpMessageConverter
to deserialize application/octet-stream
bodies using Jackson.
Related: #5356
@sgrimm thanks, this workaround seems to work
@Bean
public MappingJackson2HttpMessageConverter octetStreamJsonConverter() {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setSupportedMediaTypes(Arrays.asList(new MediaType("application", "octet-stream")));
return converter;
}
To expand on @rPraml's code, adding octet-stream
to the supported media types in the existing MappingJackson2HttpMessageConverter
will prevent bugs when using other media types:
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import java.util.ArrayList;
@Configuration
public class SwaggerBeanConfig {
public SwaggerBeanConfig(MappingJackson2HttpMessageConverter converter) {
var supportedMediaTypes = new ArrayList<>(converter.getSupportedMediaTypes());
supportedMediaTypes.add(new MediaType("application", "octet-stream"));
converter.setSupportedMediaTypes(supportedMediaTypes);
}
}
+1
Content & configuration
Swagger/OpenAPI definition:
Is your feature request related to a problem?
It is currently not possible to define specific Content-Type for a request part via encoding/{property-name}/contentType.
Describe the solution you'd like
,
for multiple content-type possibilities.