API

송수용·2022년 5월 15일
0

getSomething()

목록 보기
10/14

API 개념!

API에 대해서 알아보자!

클라이언트와 서버간의 약속

위에서 강조한 내용처럼 요약하면 클라이언트와 서버간의 약속이다.
간단하게 프로그램들이 서로 소통하는 방법을 API 라고 생각하면 된다.

API 설계방법

RestAPI의 구성

예전에는 SOAP(Simple Object Access Protocol)을 사용했지만
최근에는 RestAPI(RepresentationalStateTransfer)가 많이 사용된다.

REST는 총 4가지로 구성된다.

HTTP methods

  • POST 생성
  • GET 조회
  • PUT 업데이트
  • DELETE 삭제

request get/user 로 유저에 대한 정보를 요청하면
서버로부터 유저에 대한 데이터를 JSON 포맷을 통해 받아올 수 있다.
서버에서 제공하는 WebAPI를 통해서 서버에 있는 데이터를 읽어오거나 업데이트할 수 있다.

RestAPI의 규칙

1) URL은 정보의 자원을 표현해야한다. (리소스명은 동사보다는 명사를 사용할 것.)

2) 자원에 대한 행위는 HTTP method(GET,POST,PUT,DELETE)로 표현

  • 영화API 를 설계할 경우
  • /createMovie -> /Movie
  • /seeMovies -> /Movies
  • /getMovie/iceage -> /Movie/iceage
  • /deleteMovie/iceage -> /Movie/iceage
  • /updateMovie/iceage -> /Movie/iceage
  • /getTopRatedMovies -> /TopRatedMovies
  • /findMovieFromThisYear -> /MovieFromThisYear

왼쪽의 표현은 RestAPI 표준방식이 아니다.
동사형태를 빼주고 명사를 활용하여 오른쪽과 같이 작성한다.

  • 이 예시를 기준, 2가지로 활용할 수 있는데

    1) collection
    2) 영화제목

위의 예시로 했을 때 collection을 사용하기 위해 복수형태인 movies를 사용한다.
영화 제목을 movies/iceage 로 써준다.
그렇게 되는 DB에서는 고유식별자(unique identifier)가 된다.
이렇게 되면 /movies 와 /movies/iceage 라는 2개의 url이 나온다.

이렇게 하면 HTTP methods를 활용해서 인터랙션 할 수 있다.
HTTP methods가 위에서 언급한 GET POST PUT DELETE 이다.

GET /movies
POST /movies

로 요청을 할 수 있다.
DELETE 와 PUT 요청을 하지 않는다.

전체 영화를 삭제하거나 업데이트 하는 일은 거의 없을테니까!

  • 1) collection을 사용한다.

    GET /movies/iceage 조회
    DELETE & PUT /movies/iceage 삭제 변경

이렇게 하면 2개의 url을 사지고 CRUD API를 생성할 수 있다.

객체들의 관계 인터랙션을 위해 URL을 사용할 수도 있다.
예를 들어 해당 영화의 캐릭터를 보고 싶다면,

GET /movies/iceage/characters 조회
PUT DELETE /movies/iceage/characters 변경,삭제

이전의 방식보다 훨씬 간결하고 직관적인 구성이 된다.
이렇게 구성을 해둔다면 훨씬 더 빠르게 API 구조를 이해할 수 있다.

검색을 할 경우
애써 findGetMovioes 등과 같은 url을 굳이 생성하지 않아도 된다.
query parameter를 활용해서
훨씬 더 개선할 수 있다.

원한다면, 특정한 검색 URL을 만드는 것도 가능하다
그리고 query parameters 를 활용하면 pagination을 추가할 수 도 있다.

해당 사진은 스파르타코딩클럽 강의의 URL이다.
강의화면에서 다음 강의를 클릭하면 페이지가 변경되는데
표시한 부분이 a,b,c,d ... 순으로 변경되는 것을 볼 수 있다.

TIL

  • RestAPI에 대해서 알아보았다!
  • 지금의 방식보다 다른 사람도 이해할 수 있도록 쉽게 구성하는 방법 지향해야겠다고 생각했다.

API에 대한 깊은 이해

이어서 작성하겠당!

profile
#공부중 #협업 #소통중시 #백엔드개발자 #능동적 #워커홀릭 #스파르타코딩 #항해99 #미니튜터 #Nudge #ENTJ #브레인스토밍 #아이디어뱅크

0개의 댓글