-
[Spring] REST XML Response 예제Spring/기타 2019. 5. 25. 16:50반응형
1.Jackson 라이브러리 추가
Java 객체를 JSON으로 변환하기 위해서는 Jackson 라이브러를 추가해야합니다.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.tychejin</groupId><artifactId>springrest</artifactId><name>springrest</name><packaging>war</packaging><version>1.0.0-BUILD-SNAPSHOT</version><properties><java-version>1.8</java-version><org.springframework-version>4.1.4.RELEASE</org.springframework-version></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!-- Spring --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${org.springframework-version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${org.springframework-version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${org.springframework-version}</version></dependency><!-- Jackson --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.4.1</version></dependency></dependencies><build><finalName>springrest</finalName></build></project>cs MVNrepository : https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind
2.JAXB 어노테이션을 적용한 Java 객체 생성
Java 객체를 XML로 마샬링하여 클라이언트로 전송할 수 있도록 JAXB 어노테이션을 적용한 Java 객체를 생성해야합니다.
Employee.java
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124package com.tychejin.springrest.model;import java.io.Serializable;import javax.xml.bind.annotation.XmlAccessType;import javax.xml.bind.annotation.XmlAccessorType;import javax.xml.bind.annotation.XmlAttribute;import javax.xml.bind.annotation.XmlElement;import javax.xml.bind.annotation.XmlRootElement;@XmlRootElement(name = "employee")@XmlAccessorType(XmlAccessType.NONE)public class Employee implements Serializable {private static final long serialVersionUID = -1022621671298913705L;@XmlAttributeprivate Integer empno;@XmlElementprivate String ename;@XmlElementprivate String job;@XmlElementprivate Integer mgr;@XmlElementprivate String hiredate;@XmlElementprivate Integer sal;@XmlElementprivate Integer comm;@XmlElementprivate Integer deptno;public Integer getEmpno() {return empno;}public void setEmpno(Integer empno) {this.empno = empno;}public String getEname() {return ename;}public void setEname(String ename) {this.ename = ename;}public String getJob() {return job;}public void setJob(String job) {this.job = job;}public Integer getMgr() {return mgr;}public void setMgr(Integer mgr) {this.mgr = mgr;}public String getHiredate() {return hiredate;}public void setHiredate(String hiredate) {this.hiredate = hiredate;}public Integer getSal() {return sal;}public void setSal(Integer sal) {this.sal = sal;}public Integer getComm() {return comm;}public void setComm(Integer comm) {this.comm = comm;}public Integer getDeptno() {return deptno;}public void setDeptno(Integer deptno) {this.deptno = deptno;}public static long getSerialversionuid() {return serialVersionUID;}public Employee() {}public Employee(Integer empno, String ename, String job, Integer mgr, String hiredate, Integer sal, Integer comm, Integer deptno) {super();this.empno = empno;this.ename = ename;this.job = job;this.mgr = mgr;this.hiredate = hiredate;this.sal = sal;this.comm = comm;this.deptno = deptno;}}cs Employees.java
1234567891011121314151617181920212223242526272829303132package com.tychejin.springrest.model;import java.io.Serializable;import java.util.List;import javax.xml.bind.annotation.XmlAccessType;import javax.xml.bind.annotation.XmlAccessorType;import javax.xml.bind.annotation.XmlElement;import javax.xml.bind.annotation.XmlElementWrapper;import javax.xml.bind.annotation.XmlRootElement;@XmlRootElement(name = "employees")@XmlAccessorType(XmlAccessType.NONE)public class Employees implements Serializable {private static final long serialVersionUID = -4234081730614787155L;private List<Employee> employees;public List<Employee> getEmployees() {return employees;}@XmlElement(name = "employee")public void setEmployees(List<Employee> employees) {this.employees = employees;}public static long getSerialversionuid() {return serialVersionUID;}}cs 3.@RestController을 적용한 Controller를 생성
REST 방식의 처리를 위해서 Srping3.x 버전에서는 컨트롤러에 메소드마다 @ResponseBody 어노테이션을 적용했지만, Spring4.x 버전부터는 컨트롤러에 @RestController 어노테이션을 적용하면 메소드가 자동적으로 @ResponseBody 어노테이션을 적용한 것처럼 동작합니다.
EmployeeRestController01.java
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152package com.tychejin.springrest.controller;import org.springframework.http.HttpStatus;import org.springframework.http.ResponseEntity;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import com.tychejin.springrest.common.CommonUtil;import com.tychejin.springrest.model.Employees;@RestControllerpublic class EmployeeRestController01 {@RequestMapping(value = "/getEmployees01")public Employees getEmployeeList() {Employees employees = new Employees();employees = CommonUtil.setEmployees(00);return employees;}@RequestMapping(value = "/getEmployees01/{deptno}")public ResponseEntity<Employees> getEmployeeListDeptNo(@PathVariable("deptno") int deptno) {ResponseEntity<Employees> responseEntity = new ResponseEntity<Employees>(HttpStatus.NOT_FOUND);Employees employeeList = new Employees();if (deptno == 10) {employeeList = CommonUtil.setEmployees(10);} else if (deptno == 20) {employeeList = CommonUtil.setEmployees(20);} else if (deptno == 30) {employeeList = CommonUtil.setEmployees(30);}if (employeeList.getEmployeeList().size() > 0) {responseEntity = new ResponseEntity<Employees>(employeeList, HttpStatus.OK);}return responseEntity;}}cs CommonUtil.java
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495package com.tychejin.springrest.common;import java.util.ArrayList;import java.util.List;import com.tychejin.springrest.model.Employee;import com.tychejin.springrest.model.Employees;public class CommonUtil {public static Employees setEmployees(int deptno) {Employees employees = new Employees();List<Employee> employeeList = new ArrayList<Employee>();if (deptno == 00) {Employee employee01 = new Employee(7369, "SMITH", "CLERK", 7902, "19810220", 800, 0, 20);Employee employee02 = new Employee(7499, "ALLEN", "SALESMAN", 7698, "19810220", 1600, 300, 30);Employee employee03 = new Employee(7521, "WARD", "SALESMAN", 7698, "19810222", 1250, 500, 30);Employee employee04 = new Employee(7566, "JONES", "MANAGER", 7839, "19810402", 2975, 0, 20);Employee employee05 = new Employee(7654, "MARTIN", "SALESMAN", 7698, "19810928", 1250, 1400, 30);Employee employee06 = new Employee(7698, "BLAKE", "MANAGER", 7839, "19810501", 2850, 0, 30);Employee employee07 = new Employee(7782, "CLARK", "MANAGER", 7839, "19810609", 2450, 0, 10);Employee employee08 = new Employee(7788, "SCOTT", "ANALYST", 7566, "19870419", 3000, 0, 20);Employee employee09 = new Employee(7839, "KING", "PRESIDENT", 0, "19811117", 5000, 0, 10);Employee employee10 = new Employee(7844, "TURNER", "SALESMAN", 7698, "19810908", 1500, 0, 30);Employee employee11 = new Employee(7876, "ADAMS", "CLERK", 7788, "19870523", 1100, 0, 20);Employee employee12 = new Employee(7900, "JAMES", "CLERK", 7698, "19811203", 950, 0, 30);Employee employee13 = new Employee(7902, "FORD", "ANALYST", 7566, "19811203", 3000, 0, 20);Employee employee14 = new Employee(7934, "MILLER", "CLERK", 7782, "19820123", 1300, 0, 10);employeeList.add(employee01);employeeList.add(employee02);employeeList.add(employee03);employeeList.add(employee04);employeeList.add(employee05);employeeList.add(employee06);employeeList.add(employee07);employeeList.add(employee08);employeeList.add(employee09);employeeList.add(employee10);employeeList.add(employee11);employeeList.add(employee12);employeeList.add(employee13);employeeList.add(employee14);} else if (deptno == 10) {Employee employee01 = new Employee(7839, "KING", "PRESIDENT", 0, "19811117", 5000, 0, 10);Employee employee02 = new Employee(7934, "MILLER", "CLERK", 7782, "19820123", 1300, 0, 10);Employee employee03 = new Employee(7782, "CLARK", "MANAGER", 7839, "19810609", 2450, 0, 10);employeeList.add(employee01);employeeList.add(employee02);employeeList.add(employee03);} else if (deptno == 20) {Employee employee01 = new Employee(7788, "SCOTT", "ANALYST", 7566, "19870419", 3000, 0, 20);Employee employee02 = new Employee(7902, "FORD", "ANALYST", 7566, "19811203", 3000, 0, 20);Employee employee03 = new Employee(7876, "ADAMS", "CLERK", 7788, "19870523", 1100, 0, 20);Employee employee04 = new Employee(7566, "JONES", "MANAGER", 7839, "19810402", 2975, 0, 20);Employee employee05 = new Employee(7369, "SMITH", "CLERK", 7902, "19810220", 800, 0, 20);employeeList.add(employee01);employeeList.add(employee02);employeeList.add(employee03);employeeList.add(employee04);employeeList.add(employee05);} else if (deptno == 30) {Employee employee01 = new Employee(7499, "ALLEN", "SALESMAN", 7698, "19810220", 1600, 300, 30);Employee employee02 = new Employee(7521, "WARD", "SALESMAN", 7698, "19810222", 1250, 500, 30);Employee employee03 = new Employee(7654, "MARTIN", "SALESMAN", 7698, "19810928", 1250, 1400, 30);Employee employee04 = new Employee(7844, "TURNER", "SALESMAN", 7698, "19810908", 1500, 0, 30);Employee employee05 = new Employee(7900, "JAMES", "CLERK", 7698, "19811203", 950, 0, 30);Employee employee06 = new Employee(7698, "BLAKE", "MANAGER", 7839, "19810501", 2850, 0, 30);employeeList.add(employee01);employeeList.add(employee02);employeeList.add(employee03);employeeList.add(employee04);employeeList.add(employee05);employeeList.add(employee06);}employees.setEmployeeList(employeeList);return employees;}}cs 3.작성한 API 호출
3_1) http://localhost:8080/getEmployees01
3_2) http://localhost:8080/getEmployees01/10
반응형'Spring > 기타' 카테고리의 다른 글
[Spring] REST JSON Response 예제 (0) 2019.05.26