hyunzzzzzz
자신의 속도로 꾸준히
hyunzzzzzz
전체 방문자
오늘
어제
  • 분류 전체보기 (18)
    • 개발 (3)
      • Linux (1)
      • Python (1)
      • Git, Gitlab (0)
      • gRPC (1)
      • DVC (0)
      • Docker (0)
    • 딥러닝 (0)
    • 원티드 프리온보딩 AI•ML (NLP) (6)
    • 학습 기록 (9)
      • 선형 대수 & 통계 (0)
      • 논문 리뷰 (1)
      • 데이터 엔지니어링 (3)
      • 딥러닝 (1)
      • 데이터 처리 (1)
      • 태블로 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • dl
  • 객체 인식
  • 딥러닝
  • NLP
  • 비선형 활성화 함수
  • 프로젝트
  • 분산/편향
  • weight decay
  • API
  • 프로젝트 기획
  • http
  • 과/소적합
  • 머신러닝
  • 기준모델
  • 막대 차트
  • 데이터 증강
  • 태블로 기본
  • 프로젝트 목표
  • 은닉층
  • pre trained

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
hyunzzzzzz

자신의 속도로 꾸준히

학습 기록/데이터 엔지니어링

[REST API]

2021. 10. 27. 18:00

1. REST

- REpresentational State of Transfer

소프트웨어의 아키텍쳐를 어떻게 형성할 지에 대한 가이드라인
6개의 가이드라인이 존재하는데, 이를 다 따르게 된다면 해당 소프트웨어 아키텍쳐를 RESTful하다고 한다.
cf. REST 외에도 SOAP같은 다른 가이드라인이 존재한다.
이 중 보통 많이 사용하는 것이 REST!

2. API와 REST

- RESTful API

  • Web에서 활용하게 되는 API가 REST 가이드라인을 다 따른다면,
    해당 API를 RESTful API 라고 할 수 있다.
    • REST의 6개 가이드라인을 전부 따르지 않더라도,
      어느정도 REST 제약(가이드라인)을 지킨다면 REST API라 불린다.
    • API 간 원활한 이해, 활용 등을 위해 필요에 의해서 만든 가이드라인.
      때문에 지키는 것이 좋지만, 필수 조건은 X
    • 현업에 갔을 때 API 구축에 대한 업무 받았을 때,
      'RESTful하게 만들어야 하나요?' 라고 물어볼 수 있다.
      • RESTful 하게 만드는 것이 시간 등 비용이 더 들기 때문.

3. HTTP(API)와 REST

- HTTP Request

  • Web에서 소통 시에 HTTP는 규약에 따라 다양한 요청 보내고 응답 받는다.
  • 이 때 HTTP 소통 규약에 가이드라인을 제공하는 것이 'REST'
  • REST는 필수 조건 X
    따라서 HTTP Request 메소드 중 GET이나 POST 혹은 다른 HTTP 요청을 보내도 소통 결과에는 문제 발생하지 않는다.
    • 즉, 한 서버에서는 HTTP GET을 통해서 이미지 받을 수 있고,
      다른 서버에서는 HTTP POST를 통해 이미지 요청 받을 수 있음.
      다른 메소드를 사용했지만, 결과적으로는 둘 다 이미지 받을 수 있다.
    • 그러나 이렇게 API 따라 활용법이 다르면,
      여러 API를 사용할 때마다 해당 API의 활용법을 개별적으로 알아내야 한다는 문제가 발생한다.
  • 보통 REST API를 작성했다고 하면, 이렇게 HTTP Request 메소드를 사용한다. (반드시 지켜야하는 필수불가결한 규칙은 아님)GET : 데이터 조회
  • `POST` : 데이터 생성 `PATCH` : 데이터를 업데이트(일부 변경) `PUT` : 데이터를 업데이트 (전체 변경) `DELETE` : 데이터를 삭제
  • REST API 활용예시 : GET
    • GET 요청:
      • REST 에서 GET 요청은 정보나 리소스를 가지고 올 때만 사용하라고 제시되어 있다.
      • 즉, 서버에 기록된 데이터나 리소스를 변경하는 작업에서는 사용해서는 안된다는 뜻
- GET 요청 예시:![](https://images.velog.io/images/tls0506/post/6e75a22c-6b03-4a13-9486-8c646e5de54e/image.png)

     > 주소만 봐도 어떤 리소스를 가져오는지 파악할 수 있다.
        1. `/users` 서버에 기록된 유저들을 가져올 것이라 예상 가능
        2.  `/users?size=20&page=5` 유저를 가지고 오되, 
        추가 쿼리 파라미터(`?`뒤에 오는 항목들)을 통해 페이지와 개수를 정해주고 있음. 
        3. `/users/123` 유저 목록 중 `123`에 일치하는 유저 가져올 것이라 예상 가능
        4. `/users/123/address` 3번에서 찾은 유저의 `address` 정보 가져올 것이라 예상 가능

- HTTP Response

  • 대표적인 상태 코드(Status Code)
    • 200(ok)
    • 201(Created)
    • 202(Accepted)
    • 204(No Content)
    • 301(Moveed Permanently)
저작자표시 비영리 변경금지 (새창열림)

'학습 기록 > 데이터 엔지니어링' 카테고리의 다른 글

[API]  (0) 2021.10.27
[HTTP]  (0) 2021.10.12
    '학습 기록/데이터 엔지니어링' 카테고리의 다른 글
    • [API]
    • [HTTP]
    hyunzzzzzz
    hyunzzzzzz
    천천히 자신의 속도에 맞춰 가되, 후퇴하거나 멈추지 않고 꾸준히 나아가는 신입 AI 엔지니어의 기록 공간입니다. 즐겁게 일하며 원하는 서비스를 만드는데 기여하는 것, 그래서 서비스와 제가 함께 과정에서 성장하는 것을 목표합니다. 이를 위해 매일매일 상승과 하강 곡선을 그리는 마음을 다독이고 행복하게 일하기 위한 마인드셋을 세우려 노력합니다.

    티스토리툴바