[Spring] Rest vs RestAPI

2022. 11. 23. 04:12·Java/Spring

Rest란 무엇인가? 

Representational State Transfer라는 용어의 약자이다.

자원을 URI로 표시하고 현재 자원에 대한 상태를 주고 받는 것이다.

클라이언트는 HTTP URI를 통해서 자원을 구별하고, URI를 통해 서버에 요청을 보낸다.

클라이언트와 서버간의 통신 방식 중 하나이다.

REST의 구성 요소 : 자원(Resource), 행위 : HTTP METHOD(GET, POST, UPDATE, DELETE) 표현으로 이루어져있다. 표현(verb)

 

다음과 같이 클라이언트는 서버측에 요청을 보낼때, HTTP URI를 통해 자원을 구별한다.   

@PostMapping("/users/{userId}/boards")

 

그러면 Restful은 무엇일까?

Rest와 동일하지만, 기존 Rest보다 더욱 이해하기 쉽고 가독성 좋게 보이기(또한 설계 규칙을 잘 지켜야 한다) 위한 Rest API를 설계하는 것이다.

 

Restful API 설계를 위한 규칙 6가지

  • 소문자를 사용한다.
  • 언더바를 대신 하이픈을 사용한다.
  • 마지막에 슬래시를 포함하지 않는다.
  • 행위는 포함하지 않는다.
  • 파일 확장자는 URI에 포함시키지 않는다.
  • 가급적 전달하고자하는 자원의 명사를 사용하되, 컨트롤 자원을 의미하는 경우 예외적으로 동사를 허용한다.

 

 

1. 소문자를 사용한다.

@DeleteMapping("/boards/{boardId}") (o)
@DeleteMapping("/Boards/{BoardId}") (x)

2. 언더바 대신 하이픈을 사용한다.

 

post-hashtag(o), post_hashtag(x)

 

3. 마지막에는 슬래시를 포함하지 않는다.

 

@GetMapping("/me") (o) 
@GetMapping("/me/")(x)

 

4. 행위는 포함하지 않는다.

@DeleteMapping("/boards/{boardId}") (o)
@DeleteMapping("/boards/delete/{boardId}") (x)

5. 파일 확장자 jpg, jpeg, pdf등은 urI 포함 x

 

6. 컨트롤 자원의 경우, 이례적으로 허용한다. (crud 제외 모든 동사 허용)

저작자표시 비영리 변경금지 (새창열림)

'Java > Spring' 카테고리의 다른 글

[Spring] 애브리타임 게시판 부가기능 추가(댓글, 쪽지, 좋아요, 즐겨찾기, 페이징처리)  (0) 2023.02.11
[Spring] Spring Security + JWT를 이용한 토큰 발급 및 회원가입, 로그인 로직 구현  (2) 2023.01.08
[Spring] MVC Pattern  (2) 2022.11.23
[Spring] Bean Scope, MVC Framework, SpringApplication(Spring Boot)  (0) 2022.10.27
스프링 쇼핑몰 장바구니 기능 테스트코드(Junit5 단위 테스트)  (0) 2022.09.18
'Java/Spring' 카테고리의 다른 글
  • [Spring] 애브리타임 게시판 부가기능 추가(댓글, 쪽지, 좋아요, 즐겨찾기, 페이징처리)
  • [Spring] Spring Security + JWT를 이용한 토큰 발급 및 회원가입, 로그인 로직 구현
  • [Spring] MVC Pattern
  • [Spring] Bean Scope, MVC Framework, SpringApplication(Spring Boot)
SeungbeomKim
SeungbeomKim
[IT(PS, CS, SW, etc.) 지식 기록] Github : https://github.com/daily1313/
  • SeungbeomKim
    개발 블로그
    SeungbeomKim
  • 전체
    오늘
    어제
    • 분류 전체보기 (383) N
      • 일상 (33)
        • 여행 (17)
        • 회고록 (9)
        • 리뷰 (7)
      • PS (138)
        • 그리디 알고리즘[Greedy] (25)
        • 정렬 알고리즘[Sort] (18)
        • 문자열 알고리즘[String] (14)
        • 동적 계획 알고리즘[DP] (17)
        • 깊이 우선 탐색, 너비 우선 탐색[DFS, BFS.. (34)
        • 재귀[Recursion] (2)
        • 백트래킹[Backtracking] (5)
        • 브루트포스 알고리즘[Bruteforce] (16)
        • 자료 구조[Data Structure] (4)
        • 분할 정복 알고리즘[Divide & Conquer.. (3)
      • CS (22)
      • Network (11)
      • Database (8)
        • Elasticsearch (3)
      • Linux (2)
      • JavaScript (4)
        • AngularJS (1)
      • Java (93)
        • Effective Java (5)
        • Java Concept (20)
        • Spring (62)
        • Design Pattern (3)
      • Python (2)
      • Vscode (1)
      • DevOps (43)
        • AWS (27)
        • Git (7)
        • Docker (6)
        • Nginx (1)
      • 자격증 (10)
        • SQL (4)
      • 사이드 프로젝트 (1) N
        • MatJido (1) N
      • 기타 (9)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 소개
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    다이나믹 프로그래밍
    메타코딩
    sqld
    이펙티브 자바
    BFS
    백트래킹
    정보처리기사 실기
    일본여행
    Wi-Fi
    Effective Java
    Spring
    정보처리기사
    컴퓨터구조
    dp
    AWS
    docker
    정보처리기사 필기
    springboot
    dfs
    너비 우선 탐색
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
SeungbeomKim
[Spring] Rest vs RestAPI
상단으로

티스토리툴바