[Spring] Restful API
업데이트:
Rest API
URI + GET/POST/PUT/DELETE
HTTP URI를 통해 리소스를 명시하고, HTTP 메소드(GET/POST/PUT/DELETE)를 통해 해당 리소스를 제어하는 명령을 정의한다.
- 리소스는 JSON,XML과 같은 여러 가지 언어로 표현할 수 있다.
기존 Service vs REST Service
- 기존 Service: 요청에 대한 처리 후 가공된 데이터를 이용해 보여줄 View를 만들어 반환
- REST Service: 데이터만 처리하거나 JSON 또는 XMLM형식으로 반환 => View를 만들지 않아도 됨
REST 관련 Annotation
- RestController: Controller가 REST 방식을 처리하기 위한 것임을 명시
@RestController @RequestMapping("/user") @CrossOrigin(origins = "*") @Controller public class UserController { ... }
- ResponseBody: 뷰가 아닌 데이터 자체를 전달함
@GetMapping("/rest2") public @ResponseBody List<String> test2() { List<String> list = Arrays.asList("Hello", "Java", "World"); return list; }
- PathVariable: URL경로에 있는 값을 파라미터로 추출
@GetMapping("/rest/{id}/{no}") public @ResponseBody String test(@PathVariable String id, @PathVariable int no) { return "Hello Rest " + id + ", " + no; }
- CrosssOrigin: Ajax의 크로스 도메인 문제를 해결
@CrossOrigin(origins = "*")
- ReqeuestBody: JSON데이터를 원하는 타입으로 바인딩
public String selectUserName(@RequestBody UserDto user) { if(uservice.selectUserName(user.getUserName()) == null) return "success"; else return "fail"; }
메소드 종류
CRUD와 연관지어서 분류할 수 있다.
작업 | method | 방식 | |
---|---|---|---|
Create(Insert) | POST | /board/write | 글쓰기 |
READ(Select) | GET | /board/read/22 | 글읽기 |
UPDATE | POST | /board/update | 글수정 |
DELETE | GET | /board/delete/22 | 글삭제 |
REST API 설정
- Jackson-databind Library
Java Object를 JSON으로 변환하거나 JSON을 Java Object로 변환하는데 사용할 수 있는 Java 라이브러리
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.3</version>
</dependency>