ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TIL.75 RSETfulAPI
    TIL 2020. 12. 22. 23:30
    728x90

    이번 라인프렌즈 클론 프로젝트 진행간 적용하였던 RESTfulAPI에 대해 다음주 바로 진행하는 티웨이항공 클론 프로젝트간 다시 한번 사용하게될 RESTfulAPI를 간략히 스터디 용도로 정리하고 추후 세부적으로 다뤄보도록 하자

     

    먼저, RESTful API 란?

    백엔드에서 API의 엔드포인트 구조를 표현하는 방식 중 의 하나!이다.

    (데이터를 어떻게 주고 받을지를 URL로 표현하는것을 레스트풀 api라 이해해도 좋다!!)

     

    RESTful API vs GraphQL API 

    GraphOL API란?

    GraphQL 은 Graph Query Language 의 줄임말이다.
    Query Language 란 무엇인가?
    Query Language 는 정보를 얻기 위해 보내는 질의문(Query)을 만들기 위해 사용되는 Computer 언어의 일종이다.
    GraphQL 은 이런 Query Language 중에서도 Server API 를 통해 정보를 주고받기 위해 사용하는 Query Language 이다.

     

    등장하게 된 배경은 아래와 같다.(Facebook 의 GraphQL blog )

    • RESTful API 로는 다양한 기종에서 필요한 정보들을 일일히 구현하는 것이 힘들었다.
    • 예로, iOS 와 Android 에서 필요한 정보들이 조금씩 달랐고, 그 다른 부분마다 API 를 구현하는 것이 힘들었다.

     

    정말 간단하게 RESTful API는 백엔드 개발자가 API의 엔드포인트 구조를 표현했다면

    GraphQL API는 프론트엔드 개발자가 API의 엔드포인트의 구조를 정한다고 이해하고 넘어가자.

    (최근들어 사용빈도가 높아지고 있는 추세라고 하지만 RESTful API가 더 많이 사용되고 있다고 한다)

     


    Path parameter 란?

    아래 부분을 Path parameter라고 한다

    아래 의미는 product의 패스파라미터 1을 이용하여 통신하며 불 필요한 정보를 모두 전달하지 않도록 해준다.

     

     

     

    아래 의미는 1번 상품에 달려있는 리뷰를 가져와라는 명령이다.

    product/1/reviews

     


    PATCH

    PATCH로 데이터를 업데이트할 수 있다.

    꼭 상품의 번호를 body가 아닌 Path parameter로 보내줘야한다. (프론트 역할)

     

     


    Delete

    Request를 이용해 DB안의 자원에 직접 접근하여 원하고자하는 데이터의 삭제를 수행할 수 있다.

     


    Query String

    사용자가 입력 데이터를 전달하는 방법중의 하나로,

    url 주소에 미리 협의된 데이터를 파라미터를 통해 넘기는 것을 말한다.

    http://host:port/path?querystring

    query parameters( 물음표 뒤에 = 로 연결된 key value pair 부분)을 url 뒤에 덧붙여서 추가적인 정보를 서버 측에 전달하는 것이다. 클라이언트가 어떤 특정 리소스에 접근하고 싶어하는지 정보를 담는다.

     

    아래와 같은 Request으로 백엔드 서버로 전달되는데 

    이때의 핵심은 딕셔너리 형태의 자료구조로 원하고자하는 value를 찾기 위해 Key로 접근해야함을 잊지말자

    사실 처음 적용하는 입장에서는 이것만 알아도 적용하는데 큰 문제가 없다고 생각한다.

    http://host:port/path?sort=price
    # {'sort' : price}
    http://host:port/path?offset=0&limit=20
    # {'offset' : 0}, {''limit' : 20}

     

    말그대로 서버에 물어보는것!

    1. 모든 상품 중에 가격이 3000원인것을 모두 보내주는것 (쿼리 파라미터 = 쿼리 스트링)

    2. 여러 조건을 함께 걸어 서버에 보내주는것

     

    Query String을 사용하는 경우는 보통 아래와 같다.

    1. filtering

    2. ordering

    3. pagination

    4. search


     

    1. filtering 예

     


    2. ordering 예


    3. pagination 예

    상품정보는 1 ~ 100번까지 (맨처음 상품부터 100개까지 데이터를 리턴해달라는 이야기

    이제 101 ~ 200번까지 얻을려면

    offset=101&limit=200


    4. search 예


    그렇다면 언제 Path parameter 를 사용하고 언제 Query String을 사용해야할까?

     

    어떤 하나의 리소스가 필요할 경우 -> Path parameter

    뭉탱이로 필요한 경우 -> Query String

    이번 클론 프로젝트를 진행하며 알게되었던 사실 중 이와 관련된 내용은 Path parameter와 Query String을 하나의 Class에 작성하면 url이 복잡해져 비효율적이므로

     

    하나의 클래스에 Path parameter 또는 Query String 하나만 구현하여 사용하도록 하자.


    # 주의사항

    페이지 별로 타겟을 구성하는건 정말 나쁜 예이다.

    나는 ! 프론트엔드가 아닌 백엔드임을 명심하자.

     

    RESTfulAPI는 "데이터"를 중심으로 한다는것을 반드시 기억하자


    Status code

    728x90

    'TIL' 카테고리의 다른 글

    TIL.77 List Comprehension의 속도가 빠른이유  (0) 2020.12.24
    TIL.76 AWS  (0) 2020.12.23
    TIL.73 Github / Git 충돌(Conflict) 발생 해결  (0) 2020.12.20
    TIL.72 select_related 와 prefetch_related  (1) 2020.12.19
    TIL.71 JsonResponse 활용  (0) 2020.12.18
Designed by Tistory.