ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring] REST XML Response 예제
    Spring/기타 2019. 5. 25. 16:50
    반응형

    1.Jackson 라이브러리 추가

     Java 객체를 JSON으로 변환하기 위해서는 Jackson 라이브러를 추가해야합니다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    <?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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    package 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;
     
        @XmlAttribute
        private Integer empno;
     
        @XmlElement
        private String ename;
     
        @XmlElement
        private String job;
     
        @XmlElement
        private Integer mgr;
     
        @XmlElement
        private String hiredate;
     
        @XmlElement
        private Integer sal;
     
        @XmlElement
        private Integer comm;
     
        @XmlElement
        private 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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    package 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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    package 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;
     
    @RestController
    public 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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    package 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"800020);
                Employee employee02 = new Employee(7499"ALLEN""SALESMAN"7698"19810220"160030030);
                Employee employee03 = new Employee(7521"WARD""SALESMAN"7698"19810222"125050030);
                Employee employee04 = new Employee(7566"JONES""MANAGER"7839"19810402"2975020);
                Employee employee05 = new Employee(7654"MARTIN""SALESMAN"7698"19810928"1250140030);
                Employee employee06 = new Employee(7698"BLAKE""MANAGER"7839"19810501"2850030);
                Employee employee07 = new Employee(7782"CLARK""MANAGER"7839"19810609"2450010);
                Employee employee08 = new Employee(7788"SCOTT""ANALYST"7566"19870419"3000020);
                Employee employee09 = new Employee(7839"KING""PRESIDENT"0"19811117"5000010);
                Employee employee10 = new Employee(7844"TURNER""SALESMAN"7698"19810908"1500030);
                Employee employee11 = new Employee(7876"ADAMS""CLERK"7788"19870523"1100020);
                Employee employee12 = new Employee(7900"JAMES""CLERK"7698"19811203"950030);
                Employee employee13 = new Employee(7902"FORD""ANALYST"7566"19811203"3000020);
                Employee employee14 = new Employee(7934"MILLER""CLERK"7782"19820123"1300010);
     
                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"5000010);
                Employee employee02 = new Employee(7934"MILLER""CLERK"7782"19820123"1300010);
                Employee employee03 = new Employee(7782"CLARK""MANAGER"7839"19810609"2450010);
     
                employeeList.add(employee01);
                employeeList.add(employee02);
                employeeList.add(employee03);
     
            } else if (deptno == 20) {
     
                Employee employee01 = new Employee(7788"SCOTT""ANALYST"7566"19870419"3000020);
                Employee employee02 = new Employee(7902"FORD""ANALYST"7566"19811203"3000020);
                Employee employee03 = new Employee(7876"ADAMS""CLERK"7788"19870523"1100020);
                Employee employee04 = new Employee(7566"JONES""MANAGER"7839"19810402"2975020);
                Employee employee05 = new Employee(7369"SMITH""CLERK"7902"19810220"800020);
     
                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"160030030);
                Employee employee02 = new Employee(7521"WARD""SALESMAN"7698"19810222"125050030);
                Employee employee03 = new Employee(7654"MARTIN""SALESMAN"7698"19810928"1250140030);
                Employee employee04 = new Employee(7844"TURNER""SALESMAN"7698"19810908"1500030);
                Employee employee05 = new Employee(7900"JAMES""CLERK"7698"19811203"950030);
                Employee employee06 = new Employee(7698"BLAKE""MANAGER"7839"19810501"2850030);
     
                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

    댓글

Designed by Tistory.