본문 바로가기

웹/spring

spring --11. RESTful API

A> REST 방식이란? 

     서버에서 순수한 데이터만을 서비스 하는 방식이다.

     데이터 서비스를 위해 HTTP 프로토콜 중 get/ post/ put/ delete 

     와 같은 전송방식으로 통신을 하는 것이다.

     

     REST는 

     REpresentational State Transfer 의 약어로 하나의 URI가 하나의

     고유한 리소스를 대표하도록 설계된다는 개념을 사용하는 것이다.

     

     REST의 형태는

     /project/board/123 - GET방식

     이런형태이면 그 뜻은

     123번의 글을 요청하는 것이다. 

      

     방식에 따라 요청의 의미가 다른데

     GET 의 자료 요청

     POST는 자료 작성

     DELETE는 삭제

     의 의미이다.

 

B>Spring 에서

 

어노테이션 종류

@RestController : REST 방식을 처리하는 Controller 라는 것을 명시

@ResposeBody  :  JSP 와 같은 뷰가 아닌 데이타 자체를 전달하기 위한 용도

                        ==response 부분의 Body에 전달하겠다.

@PathVariable   :  URL 경로에 있는 값을 파라미터로 추출할때 사용

                         == /project/board/123 애서 123만 추출

@CrossOrigin    : ajax의 크로스 도메인 문제 해결

@RequestBody  : JSON 데이터를 원하는 타입으로 바인딩 처리

 

 

C> Spring에서의 준비

  -- jackson-databind 라이브러리

  -- jackson-dataformat-xml 라이브러리

  -- gson 라이브러리

     가 필요하다. pom.xml에 추가하자

 

D>@RestController

  -- 스프링4부터 지원

  -- 해당 컨트롤러의 모든 메서드는 REST 방식

  -- @RestContoller 의 return 타입 

                  -- 주로 ResponseEntity<> 타입

                  -- 그 외의 타입도 다 가능하다.

 

  -- 메소드에 사용하는 GetMapping 등의 매핑 어노테이션 속성에서

     produces 속성은 반환하는 타입이다.

1
2
3
4
5
6
7
8
@GetMapping(value = "/getText", produces = "text/plain; charset=UTF-8")
    public String getText() {
 
        log.info("MIME TYPE: " + MediaType.TEXT_PLAIN_VALUE);
 
        return "안녕하세요.";
 
    }
cs

 

1. produces 의 종류와 리턴타입

   a> produces 의 종류

     -- "text/plain; charset=UTF-8"

     -- { MediaType.APPLICATION_JSON_UTF8_VALUE, MediaType.APPLICATION_XML_VALUE }) 등

       

   b>  반환 형태

        기본적인 리턴타입은 xml 형식

        uri에 .json 을 붙이면 json 형식으로 된다.

 

 

 

2.ResponseEntity<>

   객체를 응답으로 보낼 때 사용, 응답코드 같은 것도 함께 보낼수 있다.

 

 a> consumes 속성

      요청으로 받을 속성을 명시

예시

1
    @PostMapping(value = "/new", consumes = "application/json", produces = { MediaType.TEXT_PLAIN_VALUE })
cs

 

3. @PathVariable

1
2
3
4
5
@GetMapping("/product/{cat}/{pid}") // /product/a/1 이라 할때
    public String[] getPath(@PathVariable("cat"String cat, @PathVariable("pid") Integer pid) {
// cat = a pid= 1
        return new String[] { "category: " + catt, "productid: " + pidd };
    }
cs

Mapping에 있는 path들을 변수처리하여 @PathVariable(변수) 형태로 넘긴다.

메소드의 매개변수는 이 변수들의 값을 받는다.

 

4.@RequsetBody 

1
2
3
4
5
6
7
8
@PostMapping("/ticket")
    public Ticket convert(@RequestBody Ticket ticket) {
 
        log.info("convert.......ticket" + ticket);
 
        return ticket;
 
    }
cs

 티켓 객체를 요청의 Body를 ticket으로 받는다.

 

 

 

E> 전송방식의 종류

 

1.CRUD 관련

-- create : post 

-- read : get

-- update : put

-- delete : delete

 

2.형태 

작업

전송방식

URI

등록

POST

/members/new

조회

GET

/members/{id}

수정

PUT 혹은 PATCH

/members/{id} + body (json 데이터 등)

삭제

DELETE

/member/{id}

 

 

' > spring' 카테고리의 다른 글

spring --12.스프링 시큐리티  (0) 2021.03.03
spring --13 트랜잭션  (0) 2021.02.26
spring --11.예외처리  (0) 2021.02.22
spring --9. 파일 업로드  (0) 2021.02.22
spring --0. 설정  (0) 2021.02.22