...
HTTP Method | 용도 | Spring Annotation | 기타 | |
---|---|---|---|---|
Web | REST | |||
GET | 정보를 가져올 때 | @Get | @GetMapping | URL을 통해 파라미터 형식으로 전달 |
POST | 정보를 변경할때전체를 변경할 때 | @Post | @PostMapping | HTTP Request Body에 변경할 내용을 포함해서 서버로 전달 |
PUT | 정보를 신규로 저장할 때 | @Put | @PutMapping | HTTP Request Body에 신규로 저장할 내용을 포함해서 서버로 전달 |
DELETE | 정보를 삭제할때 | @Delete | @DeleteMapping | URL을 통해 파라미터 형식으로 전달 |
PATCH | 정보를 부분 변경할 때 | @Patch | @PatchMapping | HTTP Request Body에 변경할 내용을 포함해서 서버로 전달 |
- REST 이전에는 POST 방식으로 데이터를 변경(신규 추가, 변경, 삭제)하는 작업을 수행함
- PUT, DELETE는 REST 이전에 보안 위배로 등록되어 활용할 수 없었으며 현재도 막는 기업들이 있음
...
코드 블럭 | ||||
---|---|---|---|---|
| ||||
@GetMapping("/{id}") public ResponseEntity<?> getBazz(@PathVariable String id){ return new ResponseEntity<>(new Bazz(id, "Bazz"+id), HttpStatus.OK); } @PostMapping public ResponseEntity<?> newBazz(@RequestParam("name") String name){ return new ResponseEntity<>(new Bazz("5", name), HttpStatus.OK); } @PutMapping("/{id}") public ResponseEntity<?> updateBazz(@PathVariable String id, @RequestParam("name") String name) { return new ResponseEntity<>(new Bazz(id, name), HttpStatus.OK); } @DeleteMapping("/{id}") public ResponseEntity<?> deleteBazz(@PathVariable String id){ return new ResponseEntity<>(new Bazz(id), HttpStatus.OK); } |
URI 규칙
규칙 | 설명 |
---|---|
슬래시 구분자(/)는 계층 관계를 나타내는 데 사용한다 | http://api.canvas.restapi.org/shapes/polygons/quadrilaterals/squares
|
URI 마지막 문자로 슬래시(/)를 포함하지 않는다 | http://api.canvas.restapi.org/shapes http://api.canvas.restapi.org/shapes/ |
하이픈(-)은 URI 가독성을 높이는 데 사용한다 | http://api.example.restapi.org/blogs/mark-masse/entries/this-is-my-first-post
|
밑줄(_)은 URI에 사용하지 않는다 |
|
URI경로에는 소문자가 적합하다 | |
파일 확장자는 URI에 포함시키지 않는다 | |
API에 있어서 서브 도메인은 일관성 있게 사용해야 한다 | |
클라이언트 개발자 포탈 서브 도메인 이름은 일관성 있게 만들어야 한다 | |
http://hungry-developer.blogspot.com/2014/06/rest-api.html |
GET Method에서 파라미터 처리
파라미터 종류 | URL 형식 | Spring Annotation | 예시 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
Request Parameter | /login?index=1&page=2 | @RequestParam |
| |||||||
Path Variable | /index/1 | @PathVariable |
|
Request Body의 형식
형식 | 유형 | 설명 |
---|---|---|
텍스트 | JSON | REST 방식의 출현, AJAX의 출현을 JSON 형식이 현재 가장 대세 과거 JSON은 UI에서 사용하던 기술이나 이제는 Server 간 데이터 송수신에서도 JSON을 사용 |
XML | 과거 XML은 이기종 시스템(Server)간 데이터 송수신시 가장 완벽한 포맷으로 사용 XSD 등의 스키마를 통해 데이터의 구조 및 유효성이 보장 XML은 파싱에 과도한 비용이 소요되고 무겁다는 인식으로 최근은 사용하지 않음 | |
PLAIN | JSON, XML도 엄밀하게 따져보면 PLAIN TEXT 어떤 것이든 PLAIN TEXT로 내용을 담을 수 있음 | |
바이너리 | IMAGE | 이미지 파일을 송수신할 때 Request & Response Body에는 이미지 바이너리 데이터가 포함 파일의 포맷은 HTTP Header를 통해서 전달되며 웹 브라우저는 헤더를 보고 어떤 포맷인지를 확인한 후 바이너리를 로딩하여 처리 |
기타 미디어 | MP4 등도 Request & Response Body에 포함이 가능하며 HTTP Header를 보고 결정 웹 브라우저인 경우 HTTP Header를 보고 알아서 동작함 웹 브라우저가 아닌 경우 개발자가 알아서 처리함 |
...