티스토리 뷰
API(Application Programming Interface)
■ API는 프로그램끼리 소통하도록 연결해주는 역할을 합니다.
■ 서로 다른 소프트웨어나 어플리케이션 간을 연결해주는 매개체이자 약속입니다.
예시1
▶ 날씨앱을 이용해 내일의 날씨를 조회한다면,
앱은 날씨 정보를 제공하는 서버에게 정보를 요청해야 하는데
이 때, 앱과 날씨 서버간의 통신을 도와주는것이 API입니다.
서로간의 약속을 한것처럼 API는 정해진 규칙
(어떤정보를 어떻게 요청하는가?, 응답은 어떤 형식으로 받는가?)에 따라
날씨 서버에 정보를 요청하는 역할을 담당합니다.
즉, 날씨 앱의 사용자는 API를 통해
서버로 날씨 정보를 요청(Request)하고 서버는 이 요청을 처리한 뒤
최종 날씨 정보를 API를 통해 반환(Response)하게 됩니다.
예시2
▶ 애플리케이션을 만들때
[ 로그인 ], [ 로그아웃 ] 버튼이 있을 때 이 버튼들을 클릭하면 원하는 동작이 이루어 져야합니다.
[ 로그인 ]버튼을 누르게 된다면 화면에 보이는 로그인은 버튼만 보여주는거고
데이터베이스에서는 해당 로그인아이디가 있는지 찾아 줄것입니다.
여기서 버튼을 누르면 데이터베이스까지 찾아가는,
또 찾은 로그인 아이디를 반환해서 작업하는 그 연결과정이 API입니다.
예시3
▶ 날씨 API → 날씨 데이터베이스에 있는 정보를 클라이언트에게 제공
즉, 날씨 데이터베이스와 의 연결과정입니다.
REST API(Representational State Transfer)
■ HTTP를 통해 REST아키텍쳐 스타일의 디자인원칙을 준수하는 API입니다.
■ www와 같은 분산 하이퍼 미디어 시스템을 위해 네트워크 상에서 자원을 쉽고 명확하게 식별하고
조작할 수 있게 도와주는 소프트웨어 아키텍처의 한 형식입니다.
■ URL, Header, Method등 네트워크 표현 수단을 사람이 봐도 이해하기 쉬운 표현으로 정의하는 것입니다.
REST API의 구성 3가지
1. 자원(Resource) - URL
■ 우리가 만들 소프트웨어가 관리하는 모든것을 자원으로 표현할 수 있습니다.
영화관이라면 영화(Movies)에 관한 정보를 관리하고 굿즈(Goods)에 대한 상품도 관리를 합니다.
이걸 URL로 사용한다면 영화(/Cinema/movies), 굿즈(/Cinema/goods)로 표현할수가 있습니다.
2. 행위 - HTTP method(웹 기술)
■ URL로 백엔드에서 다른 처리를 할 수 있도록 일종의 갈림길을 만들어 줍니다.
■ HTTP method로 해당 자원에 대한 행위를 표현할 수 있습니다.
• GET 메서드 - 데이터를 읽는 작업( 조회(Read) )
• POST 메서드 - 새로운 데이터를 생성하는 작업( 생성(Create) )
• PUT, PATCH 메서드 - 기존의 데이터를 수정하는 작업( 수정(Update) )
• Delete 메서드 - 기존의 데이터를 삭제하는 작업( 삭제(Delete) )
3. 표현
■ 해당 자원을 어떻게 표현할지에 대한 방법입니다. 보통 JSON, XML같은 형식을 이용해서 자원을 표현합니다.
■ HTTP에서는 Content-Type이라는 헤더를 통해 표현 방법을 서술합니다.
⭐REST API를 사용하여 설계해야 하는 이유⭐
영화를 저장하고 읽고 수정하고 삭제한다고 가정했을때
- 생성 = /makeMovie - 만들다
- 조회 = /readMovie - 읽다
- 1번영화조회 = /seeMovie/1 - 보다
- 삭제 = /delete - 지우다
이렇게 설계를 했습니다.
URL에는 사람이 봐도 이해하기 쉬운 표현이 적혀있지만 규칙성이 없습니다.
조회하는 곳은 read로 적혀있는데 1번영화 조회하는 곳은 see로 시작하는걸 볼수 있습니다.
이렇게 혼용해서 사용하게 된다면 개인이 작업할 때는 개인이 이해하고 어떻게 돌아가는지 잘 알고 있지만
협업하는 과정에서는 팀원들은 see와 read를 헷갈려 할수도 있기 때문에,
실수로라도 read와 see를 섞어서 사용했다면 수정하는데 고통스러움이 따를 것입니다.
그렇기 때문에 REST API를 사용하여 설계를 해야합니다.
설계하는 법
1. read와 see같은 동사를 다 없애고 명사만 둡니다.
동사를 사용하지 않음으로써 URL이 단순하게 바뀔수 있습니다.
영화 조회 - /Movie
1번영화 조회 - /Movie/1
2. 해당 목적에 맞는 HTTP 메서드를 사용합니다. ( GET, POST, PUT, DELETE )
이렇게 하면 1가지의 URL을 사용하여 백엔드에 4가지 작업을 지시 할수 있게 됩니다.
조회작업 - GET /Movie/1 → 1번 영화를 조회하겠다
생성작업 - POST /Movie/1 → 1번 영화를 생성하겠다
수정작업 - PUT /Movie/1 → 1번 영화를 수정하겠다
삭제작업 - DELETE /Movie/1 → 1번 영화를 삭제하겠다
또한 HTTP 메서드를 사용하여 협업하는 팀원과 작업할때에도 훨씬 이해하기가 쉽게 됩니다.
'프로그래밍 기초 > CS' 카테고리의 다른 글
쿠키(Cookie)와 세션(Session) (0) | 2024.02.13 |
---|---|
JWT 사용자 인증 미들웨어 (0) | 2024.01.27 |
웹서버란? (0) | 2024.01.18 |
웹과 HTTP (0) | 2024.01.17 |
자료구조[선택정렬(Selection Sort)] (1) | 2024.01.09 |