1. REST 는 2000년 Roy Fielding이 정의한 웹 아키텍쳐 스타일 이다.
    1. 자원(Resouce) 기반 설계

    2. HTTP 프로토콜을 활용하여 자원을 표현하고 상태를 전송

    3. REST를 따르는 API를 RESTful API라고 부릅니다.

    4. 특징

      1. 웹의 모든 데이터는 자원으로 취급

        1. REST에서 자원이란
          1. 서버가 관리하는 모든 것을 자원으로 본다

          2. 자원은 URI로 식별되고, HTTP메서드(GET 조회, POST 삽입, PUT,PATCH 업데이트, DELETE 삭제)로 조작 가능

          3. 특징

            1. 각 자원은 고유 URI를 갖고 HTTP 메서드로 CRUD 가능
            2. 자원 내부 데이터 구조는 JSON, XML 등으로 표현 가능
            3. 클라이언트는 URI를 통해 자원을 요청/조작, 서버는 자원을 반환
            GET /users/1 -> 사용자 1 조회
            POST /posts -> 새로운 게시글 생성
            PUT /posts/10 -> 게시클 10 전체 수정
            DELETE /comments/5 -> 댓글 5 삭제
            
            

            iii.자원 = URL로 식별되는 데이터 단위

            iiii. 웹에 모든 데이터는 프로젝트에서 관리하는 엔터티(사용자, 댓글, 게시글 등)

      2. 자원마다 고유한 URI 존재

      3. HTTP 메서드 활용

        1. GET(조회) ,POST(생성), put/PATCH(수정), DELETE(삭제)
      4. 서버는 요청 간 클라이언트 상태를 저장하지 않음

      5. 자원은 JSON, XML 등 다양한 포맷으로 표현 가능

      6. 클라이언트와 서버는 계층화하여 독립적으로 설계 가능

    5. 장점

      1. 단순하고 직관적(HTTP 표준과 URI만 알면 사용 가능하므로)
      2. 클라이언트와 서버의 분리로 독립적 개발 가능
      3. 다양한 플랫폼을 지원합니다. (앱, 웹 등등)

      캐시 활용이 가능합니다.

      1. REST 규약을 따르면 API 설계 일관성 확보 가능
    6. 단점

      1. 서버가 클라이언트 상태를 기억하지 않음
      2. 웹소켓 같은 실시간 통신에는 부적합
      3. 단순 CRUD에는 좋지만 복잡한 트랜잭션 표현이 어려움
      4. 구현의 자유도가 높아서 일관성 저하 기능