RESTful API
[ 정의 ]
- REST (Representational State Transfer)
- 웹 상의 자원(데이터)을 자원의 이름으로 표현해서 자원의 상태(값, 정보)를 주고 받는 행위를 의미한다.
- RESTful API와 REST API는 같은 의미라고 생각하면된다.
- HTTP URI를 통해 자원을 명시하고, HTTP Method를 통해 해당 자원에 대한 CRUD 처리를 적용한다.
- REST 아키텍처를 구현한 API (*아키텍처: 시스템 구조를 의미)
- HTTP 기반의 웹 기술 구현
[ 수업 목표 ]
- 기존 웹 상의 데이터를 접근하는 방식에서 수정된 "REST" 방식의 접근 방법을 배운다.
[ 설계 규칙 ]
1) URI에서 자원을 표시한다.
2) URI에 동사(list, add, edit ...)를 표시하지 않는다.
3) HTTP Method를 사용해서 행동을 표시한다. (도움자료: https://developer.mozilla.org/ko/docs/Web/HTTP/Methods)
이름 | 설명 |
GET | 리소스 요청 |
POST | 데이터 생성 |
PUT | 데이터 수정(전체 수정, 주로 PATCH 보다 많이쓰인다. |
PATCH | 데이터 수정(일부 수정) |
DELETE | 데이터 삭제 |
4) URI + HTTP Method
5) 구분자는 '/' 를 사용한다.
6) URI 마지막에 '/'를 적지 않는다.
- http://localhost/board (O)
- http://localhost/board/ (X)
7) URL에 '-'(하이픈)을 간간히 사용한다.
8) URL에 '_'(언더바)는 사용하지 않는다. (에러가 나지는 않지만 가독성 때문에 사용하지 않는다.)
9) 파일 확장자를 사용하지 않는다.
10) 반환하는 데이터는 주로 데이터만 반환한다.
- HTML 소스 반환 (X) -> 페이지 반환 -> 사용범위 -> 브라우저 한정...
- 순수 데이터 반환 (O) -> XML, JSON 반환 -> 사용범위 -> 다양해짐..(웹, 모바일, 기타 플랫폼 ..)
11) 이전 server 수업 때 접했던, OpenAPI는 대부분 REST 방식으로 구현 되어있다.
- URL 명확 & 반환값 범용 포맷(XML, JSON)
[ 기존 방식과 REST 방식의 URL 차이점 ]
- 기존에 우리가 알던 URI에서 어떤 업무인지 알고 있었지만, REST는 URI에서는 알기 어렵지만 요청하는 Method를 통해서 어떤 업무인지 알 수 있다.
기존 방식 | REST 방식 | |
목록 | http://localhost/board/list.do (GET) | http://localhost/board (GET) |
글쓰기 | http://localhost/board/add.do (POST) | http://localhost/board (POST) |
수정하기 | http://localhost/board/edit.do?seq=1 (POST) | http://localhost/board/:id (PUT) |
삭제하기 | http://localhost/board/del.do?seq=1 (GET) | http://localhost/board/:id (DELETE) |
검색 | http://localhost/board/list.do?word=검색어 (GET) | http://localhost/board/검색어 (GET) |
[ API 테스트 플랫폼 ]
- REST는 API인데, 여기서 테스트 결과를 우리는 매번 웹 페이지를 통해서 확인을 했다. 하지만 json형식으로 된 데이터를 확인하기에는 많은 불편함이 있었다. 그렇기 때문에 개발된 API를 테스트하기 위한 플랫폼이 여러개 존재한다.
1) Postman (https://www.postman.com/)
2) insomnia (https://insomnia.rest/download)
3) VSC (확장프로그램: REST Client https://marketplace.visualstudio.com/items?itemName=humao.rest-client )
- 3개 전부 API 개발을 할 떄 많이 쓰이며 수업에서는 전부 써봤지만, 현재는 insomnia만 사용해서 예제를 살펴볼 예정이다.
'교육 > Spring' 카테고리의 다른 글
Spring 개발자 수업 111일차 - RESTful API Client 구현 (0) | 2021.09.03 |
---|---|
Spring 개발자 수업 110일차(2) - RESTful API (0) | 2021.09.02 |
Spring 개발자 수업 109일차 - jQuery Ajax를 이용한 post-it 메모장 만들기(작성, 위치 저장, 삭제) (0) | 2021.08.31 |
Spring 개발자 수업 108일차 - jQuery Ajax를 이용한 post-it 메모장 만들기(생성, 확인) (0) | 2021.08.30 |
Spring 개발자 수업 107일차 - 휴강 (0) | 2021.08.28 |
댓글