[Spring] REST API

박세윤·2023년 4월 24일
0

Spring

목록 보기
9/11
post-thumbnail

📖 REST API

📌 REST API


✅ REST (Representational State Transfer)

  • 하나의 URI는 하나의 고유한 리소스(Resource)를 대표하도록 설계 + 전송방식 결합하여 원하는 작업 지정

  • 웹의 장점을 최대한 활용할 수 있는 아키텍처(설계구조)로서 REST 발표

  • HTTP URI를 통해 제어할 자원(Resource)를 명시하고, HTTP Method(GET, POST, PUT, DELETE)를 통해 해당 자원(Resource)를 제어하는 명령을 내리는 방식의 아키텍쳐



✅ REST 구성

  • 자원(Resource) : URI

  • 행위(Verb) : HTTP Method

  • 표현(Representations)

  • 잘 표현된 HTTP URI로 리소스를 정의

  • HTTP method로 리소스에 대한 행위 정의

  • 리소스는 JSON, XML과 같은 여러 언어로 표현



✅ REST

  • 기존의 접근 방식은 GET과 POST만으로 자원에 대한 CRUD 처리, URI는 액션을 나타냄.

  • REST로 변경할 경우, 4가지 method를 모두 사용해서 CRUD를 처리하며, URI는 제어하려는 자원을 나타냄



✅ REST API

  • API(Application Programming Interface) : 컴퓨터나 컴퓨터 프로그램 사이 연결
    • 일종의 소프트웨어 인터페이스, 다른 종류의 소프트웨어에 서비스 제공
    • 두 소프트웨어 요소들이 서로 통신을 할 수 있게 하는 방식
    • Application은 고유한 기능을 가진 모든 소프트웨어
    • Interface는 두 애플리케이션 간 요청과 응답에 의한 통신 방법
  • API 구성 호출
    • 서브루틴
    • 메소드
    • 요청(엔드포인트)
  • API 목적
    • 내부의 세세한 부분을 숨기는 것



✅ API 유형

  • 프라이빗 API

    • 기업 내부에 있으며 비즈니스 내에서 시스템과 데이터를 연결하는데 사용
  • 퍼블릭 API

    • 일반에게 공개되며 누구나 사용 가능
    • 사용에 대한 권한 설정과 비용이 있을수도
    • 대부분이 REST 방식



✅ REST API (REST + API)

  • 기존 전송방식과 달리 서버는 요청으로 받은 리소스에 대해 순수한 데이터 전송

  • 기존 GET/POST 외에 PUT, DELETE 방식을 사용하여 리소스에 대한 CRUD 처리 가능

  • HTTP URI를 통해 제어할 자원(Resource) 명시, HTTP METHOD(GET/POST/PUT/DELETE)를 통해 해당 자원(Resource)를 제어하는 명령을 내리는 방식의 Architecture

  • 가장 큰 단점 : 표준이 없다. - 암묵적인 표준만 존재

    • 하이픈(-) 사용 가능, 언더바(_) 사용 X
    • 특별한 경우 제외 대문자 사용 X (대소문자 구분)
    • URI 마지막에 슬래시(/) 사용 X
    • 슬래시(/)로 계층 관계를 나타냄
    • 확장자가 포함된 파일 이름을 직접 포함시키지 않는다.
    • URI는 명사 사용



✅ 기존 Service vs REST API Service

  • 기존 Service : 요청에 대한 처리 후, 가공된 data를 이용하여 특정 플랫폼에 적합한 형태의 View로 만들어 반환

  • REST Service : data 처리만 한다거나, 처리 후 반환될 data가 있다면 JSON이나 XML 형식으로 전달

    • View에 대해 신경 쓸 필요 X
    • 이러한 이유로 Open API에서 많이 사용



✅ RESTful

  • Rest API로 구축된 웹 서비스



📌 Spring REST API

✅ Spring REST 관련 Annotation 및 클래스



✅ 요청 방식

  • 요청 방식


  • @ResponseBody


  • @RestController


  • @RequestBody


  • ResponseEntity



✅ REST Client 설치 - 크롬 웹 스토어 Talend API



profile
개발 공부!

0개의 댓글