RESTful API를 설계할 때 URL(엔드포인트) 구조를 정하는 것은 매우 중요합니다. 좋은 URL 설계는 명확하고 직관적이며, API를 사용하는 사람들이 쉽게 이해할 수 있도록 도와줍니다.
(1) /boards?title=제목1
select * from board where title = '제목1';(2) /boards?title=제목1&content=내용1
select * from board where title = '제목1' and content = '내용1';(3) /boards/1
select * from board where id = 1;(4) /boards
select * from board(5) /boards/2/comments
RESTful API URL 설계 규칙
- 리소스 명칭:
- 데이터베이스 테이블 이름을 기반으로 리소스를 표현할 때, 일반적으로 복수형을 사용합니다.
- 예를 들어,
board
테이블의 리소스는boards
로 표현합니다.
- 리소스의 식별:
- 각 리소스에 대한 고유 식별자(PK)는 Path Variable로 사용합니다.
- 예를 들어, 특정
board
의 ID가1
인 리소스에 접근하려면/boards/1
과 같이 표현합니다.
- 계층적 관계 표현:
- 리소스 간의 계층적 관계는 URL 경로를 통해 표현합니다.
- 예를 들어,
board
와 그board
에 속한comment
의 관계를 표현하려면/boards/1/comments
와 같이 계층 구조로 나타냅니다.
- 필터링 및 검색:
- 리소스 목록을 검색하거나 필터링할 때는 Query String을 사용합니다.
- 예를 들어, 특정 제목과 내용을 가진 게시글을 검색하려면
/boards?title=제목1&content=내용1
와 같이 표현합니다.
나의 코드에 적용
@GetMapping("/boards/{id}") public String detail(@PathVariable("id") Integer id, HttpServletRequest request) { Board board = boardRepository.findById(id); request.setAttribute("model", board); return "board/detail"; }
id값은 pk값 고유한 식별자 이므로 PathVariable로 받고 board테이블이니 s를 붙였다.
정리
예를 들어서
유니크하거나 pk값들은 pathvaiable로 넣고
특정조건이나 필터링하는 값들은 쿼리스트링으로넣고
테이블이름이 board면 s를 붙여서 boards로 만든다.
Share article