728x90
일단 message converter 를 사용해야 되니 인터페이스를 정의해보자!
public interface HttpMessageConverter<T> {
boolean canRead(Class<?> clazz, @Nullable MediaType mediaType);
boolean canWrite(Class<?> clazz, @Nullable MediaType mediaType);
List<MediaType> getSupportedMediaTypes();
T read(Class<? extends T> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException;
void write(T t, @Nullable MediaType contentType, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException;
}
이미 다들 알고 있었지만 Http 요청의 content-Type은 다양하다. xml로 전화하려면 해당 converter 를 사용해야 된다. SpringMVC는 기본적으로 Jackson 으로 구현 된 MappingJackson2XmlHttpMessageConverter 객체를 제공한다.
Spring (springboot아님) 에서는 아래와 같이 했었다.
@Configuration
public class MessageConverterConfig1 extends WebMvcConfigurerAdapter {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
Jackson2ObjectMapperBuilder builder = Jackson2ObjectMapperBuilder.xml();
builder.indentOutput(true);
converters.add(new MappingJackson2XmlHttpMessageConverter(builder.build()));
}
}
그럼 Springboot 에서는 조금 더 쉽게 할수 있지 않을까 ? 맞다 바로 아래와 같이.
pom.xml dependency 추가 하면 자동으로 MappingJackson2XmlHttpMessageConverter 를 사용할수 있게 된다.
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</dependency>
xml 전환하려는 객체 생성
@Data
@NoArgsConstructor
@AllArgsConstructor
@JacksonXmlRootElement(localName = "User")
public class User {
@JacksonXmlProperty(localName = "name")
private String name;
@JacksonXmlProperty(localName = "age")
private Integer age;
}
참고 : @Data、@NoArgsConstructor、@AllArgsConstructor Lombok 전용이다.@JacksonXmlRootElement、@JacksonXmlProperty 만 참고하면 된다.
xml 작성
<User>
<name>aaaa</name>
<age>10</age>
</User>
xml요청을 받는 controller 를 만든다.
@Controller
public class UserController {
@PostMapping(value = "/user",
consumes = MediaType.APPLICATION_XML_VALUE,
produces = MediaType.APPLICATION_XML_VALUE)
@ResponseBody
public User create(@RequestBody User user) {
user.setName("didispace.com : " + user.getName());
user.setAge(user.getAge() + 100);
return user;
}
}
POSTMAN 으로 xml 요청을 해보자
끝!
'Springboot2.x 강좌 > API개발' 카테고리의 다른 글
SpringFox 3 및 Swagger 설정 (0) | 2023.01.04 |
---|---|
프로젝트 구동 시 RequestMappingHandler 로그 설정 (0) | 2023.01.04 |
Swagger 의 api 들을 효율적으로 분리하기 (0) | 2023.01.04 |
JSR-303 그리고 validation 체크 (0) | 2023.01.04 |
문서자동화 도구 Swagger2를 사용해보자 (0) | 2023.01.04 |