Spring Boot REST API에서 XML 처리하기

2024. 12. 31. 10:16IT정보/초보자를 위한 IT 팁

반응형

REST API는 일반적으로 JSON 형식을 많이 사용하지만, XML 형식이 필요한 경우도 있습니다.

이번 글에서는 Spring Boot에서 REST API를 통해 XML 데이터를 처리하는 방법을 자세히 설명합니다.

 


1. XML이 필요한 이유는?

XML은 JSON과 마찬가지로 데이터를 구조화하여 표현하는 형식입니다. 다음과 같은 상황에서 XML이 필요할 수 있습니다.

  • 레거시 시스템과의 통합: 기존 시스템이 XML 기반일 경우.
  • 표준화된 데이터 교환: SOAP API나 기타 XML 기반 표준을 준수해야 할 경우.
  • 더 많은 데이터 메타정보 필요: XML은 스키마를 통해 데이터를 더욱 엄격하게 정의할 수 있습니다.

2. XML 처리에 필요한 설정

Spring Boot에서 기본적으로 JSON을 처리하지만, XML을 처리하려면 추가적인 의존성과 설정이 필요합니다.

의존성 추가

Spring Boot XML 설정을 위해 jackson-dataformat-xml 라이브러리를 추가해야 합니다.

Maven

<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
</dependency>

Gradle

implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml'

 

3. XML 데이터를 주고받는 REST API 만들기

3.1. 데이터 모델 생성

Spring Boot REST XML 데이터 모델을 생성하려면 데이터를 표현할 클래스를 정의해야 합니다. Spring Boot에서는 @JacksonXmlRootElement를 사용하여 XML의 루트 요소를 정의할 수 있습니다.

import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;

@JacksonXmlRootElement(localName = "Person")
public class Person {
    private String firstName;
    private String lastName;

    // 기본 생성자 필요
    public Person() {
    }

    public Person(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
}

3.2. REST 컨트롤러 작성

Spring Boot XML 데이터 응답과 요청 처리를 위한 컨트롤러를 작성합니다. produces와 consumes 속성을 사용하여 XML 형식을 처리합니다.

import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api")
public class XmlController {

    @GetMapping(value = "/xml", produces = MediaType.APPLICATION_XML_VALUE)
    public Person getPersonAsXml() {
        return new Person("John", "Doe");
    }

    @PostMapping(value = "/xml", consumes = MediaType.APPLICATION_XML_VALUE)
    public String postPersonAsXml(@RequestBody Person person) {
        return "<response><message>Received:</message><name>" + person.getFirstName() + " " + person.getLastName() + "</name></response>";
    }
}

주요 내용

  • @GetMapping과 @PostMapping에서 **MediaType.APPLICATION_XML_VALUE**를 사용해 XML 데이터를 처리합니다.
  • @RequestBody를 통해 XML 요청 데이터를 Person 객체로 매핑합니다.

4. 테스트

REST API를 테스트하려면 Postman 또는 cURL을 사용하시면 됩니다.

GET 요청

요청:

GET /api/xml HTTP/1.1
Accept: application/xml

응답:

<Person>
    <firstName>John</firstName>
    <lastName>Doe</lastName>
</Person>

POST 요청

요청:

POST /api/xml HTTP/1.1
Content-Type: application/xml

<Person>
    <firstName>Jane</firstName>
    <lastName>Doe</lastName>
</Person>

응답:

<response>
    <message>Received:</message>
    <name>Jane Doe</name>
</response>

 

5. 추가 설정

XML Pretty Printing

Spring Boot XML Pretty Printing을 위해 응답 XML을 보기 좋게 출력하려면 Jackson2ObjectMapperBuilder를 설정합니다.

@Bean
public Jackson2ObjectMapperBuilder xmlMapperBuilder() {
    return new Jackson2ObjectMapperBuilder()
            .indentOutput(true)
            .createXmlMapper(true);
}

 

6. 참조 사이트

 

결론

Spring Boot에서 XML 데이터를 처리하는 방법은 비교적 간단합니다. Spring Boot XML 설정, REST API XML 응답 및 요청 처리를 위해 필요한 모든 단계를 다뤘습니다. 의존성을 추가하고, 모델과 컨트롤러를 정의하면 REST API에서 XML 데이터를 쉽게 주고받을 수 있습니다. 이 글을 따라 실제 프로젝트에서 XML 처리를 적용해 보세요!

 

#SpringBoot #RESTAPI #XML처리 #SpringBootXML #SpringXML #XMLResponse #XMLRequest #SpringBootREST #springboot개발 #java웹개발

반응형