티스토리 뷰
Applicatioin Programming Interface
: 한 프로그램에서 다른 프로그램으로 데이터를 주고받기 위한 방법
방법이라는 것이 무엇일까 ?
식당 메뉴판 으로 생각하면 쉽다. 우리들은 식당에 가면 메뉴판에 보고 거기에 적힌 메뉴들을 주문한다.
이 때 메뉴를 API로 보면 된다.
식당의 API
: 식당과 손님이 음식을 주고받기 위한 방법
실제 웹 서비스를 예로 들면,
애니메이션 보내주는 프로그램(웹서버)을 만들었다고 하면 유저는 보노보노 보여주세요 하고 요청을 하게 되는가?
아니다. 먼저 애니메이션 보내주는 프로그램에 메뉴판을 어딘가에 만들어 둬야 한다.
1. 보노보노
2. 세일러문
3. 드래곤볼
우리는 이런걸 보여줄 수 있습니다. 이렇게 메뉴판을 만들어 둬야 서비스가 가능하다. 식당과 똑같다.
그래서 실제 앱/웹 서비스에서 사용하는 API라는 용어는 유저와 서버가 데이터 주고받는 정확한 방법 이라고 볼 수 있다.
서비스하기 위해서 만들어놓은 메뉴판.
그래서 방법은?
웹 서비스에서는 방법은 어떻게 생겼는가?
실은 코드 이다. API를 만들고 동작시키는 것은 전부 코드로 이루어져 있다.
(애니메이션 서버와 유저가 애니메이션을 주고받기 위한 방법 - 코드)
public AniVO showAnimation(HttpServletRequest request, Model model){
Animation animation = aniService.showAnimation(request);
return AniVO;
}
실행하면 DB에서 애니메이션을 뽑아서 보여준다
유저가 이 코드를 어떻게 동작시킬 수있을까? 해킹해서 침입하지 않는 이상 이 코드를 동작시킬 수 없다.
그래서 여기서 API라는 것을 코드로 짜 놓아야 한다.
@GetMapping(value = "/show.do")
public AniVO showAnimation(HttpServletRequest request, Model model){
Animation animation = aniService.showAnimation(request);
return AniVO;
}
추가된 부분은 아래와 같다.
@GetMapping(value = "/show.do")
'이 url로 GET요청을 하면 안에있는 코드를 실행해주세요.' 라는 뜻이다. 이 부분이 API이다.
어떤 유저가 이 url로 GET요청을 하면 애니메이션을 볼 수 있도록 코드를 미리 짜 놓는다.
그리고 유저에게 이 API를 메뉴판처럼 어딘가에 알려주면 된다.
API는 작성하는 법이 있다.
API가 가져야할 내용에는 무엇이 있을까?
실제 네이버가 만들어둔 웹툰 API 예시
(GET 요청) comic.naver.com/webtoon/detail?titleId=641253 (이 API를 쓰면 '외모지상주의' 가 나옴)
1. 요청방식이 들어가야 한다.(method)
데이터를 달라고 할 것인지, 데이터를 보낼것인지
2. 어떤 자료를 요청할지 (endpoint) 웹툰? 댓글? 뉴스?
3. 자료요청에 필요한 추가정보(parameter) 내 아이디, 몇화보고싶은지 등
REST API : 이해가 쉽고 관리가 쉬운 api를 작성하는 방법론으로 보면 쉽다.
유저는 이 메뉴판을 어떻게 이용해야 할까?
유저도 코드를 작성해야 애니메이션을 볼 수 있다. 모든것은 코드를 짜서 통신을 하게 된다.
실제로 우리는 늘 API를 요청하고 있다.
API를 요청하기 위한 가장 쉬운 도구가 있는데 바로 우리가 늘 사용하는 브라우저 이다.
상단에 URL창(주소창)이 바로 API를 요청하는 공간이라고 보면 된다.
그런데 일반인이라면 직접 주소를 적진 않고, 우리가 보는 브라우저 html코드 안에 API요청을 쉽게 할 수 있도록 버튼들이 숨겨져 있기 때문에 이미지를 누르면 또는 버튼을 누르면 여기로 get요청 해주세요 등 코드가 숨겨져 있기 때문에 짤 필요가 없다.
API의 종류
public API : 누구나 사용가능한 공개 API
private API : 사내에서 사용하는 API
partner API : 미리 정해둔 유저만 사용하는 API
모든 프로그램은 API를 가질 수 있다.
Windows API : 윈도우 운영체게 기능들을 사용 가능하다.
Database 관리프로그램 API : DB입출력을 가능하게 한다.
'ALL' 카테고리의 다른 글
jsp내에서 JSTL과 스트립트의 실행 시점 (0) | 2023.04.25 |
---|---|
[Book] 객체지향의 사실과 오해 - 조영호 (1) | 2023.01.25 |
2022 회고록 (0) | 2023.01.01 |
[React] useState 간단예제 카운터 (0) | 2022.12.29 |
modal 열기, 닫기, 닫기 이벤트처리 및 해제 (0) | 2022.12.13 |
- Total
- Today
- Yesterday
- @Configuration
- security
- 인덱스
- 자바의정석
- 자바스크립트
- 남궁성
- 데이터베이스
- Spark
- React
- 스프링
- 스프링 프로젝트
- node
- 리액트
- EC2
- 객체지향
- AWS
- Node.js
- 한입크기로 잘라먹는 리액트
- MySQL
- spring
- JavaScript
- 코드로 배우는 스프링 웹 프로젝트
- 친절한SQL튜닝
- 시큐리티
- 데브캠프
- 이정환
- 스프링의정석
- 스프링 빈
- 컨테이너
- di
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |