https://aahc912.tistory.com/66
Swagger(스웨거) multipart/form-data에서 try out이 불가능한 문제 "Content-Type 'application/octet-stream' is not supp
개요 평소 API 문서 자동화 프레임워크로 `Swagger`를 많이 써왔는데 `multipart/form-data`를 Body로 받는 API의 경우 `Swagger` 문서에서 try out(실행)할 시에 예외(HttpMediaTypeNotSupportedException)가 발생하는 문제
aahc912.tistory.com
일단 아이디어 출처는 이거다.
@requestPart는 속성이 지정이 되지 않아서 같이 보내면 application/octet-stream이 나온다.
반면 requestBody는 타입을 지정해줄 수 있다.(swagger에 encoding 해줄 수 있다.)
@Target(
AnnotationTarget.FUNCTION,
AnnotationTarget.PROPERTY_GETTER,
AnnotationTarget.PROPERTY_SETTER,
AnnotationTarget.VALUE_PARAMETER,
AnnotationTarget.ANNOTATION_CLASS
)
@Retention(
AnnotationRetention.RUNTIME
)
@RequestBody
@Inherited
annotation class OpenApiBody(
@get:AliasFor(annotation = RequestBody::class) val description: String = "",
@get:AliasFor(annotation = RequestBody::class) val content: Array<Content> = [],
@get:AliasFor(annotation = RequestBody::class) val required: Boolean = false,
@get:AliasFor(annotation = RequestBody::class) val extensions: Array<Extension> = [],
@get:AliasFor(annotation = RequestBody::class) val ref: String = "",
@get:AliasFor(annotation = RequestBody::class) val useParameterTypeSchema: Boolean = false
)
(사용예)
@OpenApiBody(
description = "프로필 이미지와 추가 데이터를 업로드합니다.",
content = [
Content(
encoding = [Encoding(name = "commandFileRequestVO", contentType = MediaType.APPLICATION_JSON_VALUE)]
)
],
required = true
)
이제는 당당하게 openApi에서 requestPart 씁시다..!
'Back-end > SpringBoot' 카테고리의 다른 글
[SpringBoot] security 간단 이론 (0) | 2025.01.15 |
---|---|
[SpringBoot] webflux (1) | 2024.12.18 |
[SpringBoot] WebSocket ver.Spring (0) | 2024.12.18 |