Open API , Rest API 등등
여기저기서 API 이야기 하는데 뭔소린지 잘 모르겠죠?
저랑 같이 정리해봅시다
API 란?
Application Programming Interface
한 프로그램에서 다른 프로그램으로 데이터를 주고받기 위한 방법
쉽게 말해서, 메뉴판이다!
우리가 식당에서 주문을 한다고 가정해보죠.
중국집가서 치킨 먹고 싶다고 치킨을 시킬수는 없죠?
우리의 선택권을 한정시켜주는 '메뉴판'이 필요하겠죠.
주인이 메뉴판을 만들면, 그 안에서 우리가 음식을 고르게 되죠.
메뉴판이 식당의 API 가 되는 겁니다.
식당과 손님이 음식을 주고받기 위한 방법으로 사용되니까요
프로그램 측면에서 생각해보죠. 영화를 보여주는 프로그램이 있습니다
여기서 내가 마음대로 '아는형님'을 요청하면 어떻게 될까요?
안됩니다.
왜냐면 '아는형님'은 예능프로이지 영화가 아니니까요.
이 프로그램에서는 '아는형님'을 다루지 않습니다
이렇게 요청이 삐꾸(?)가 안나려면 영화 프로그램에서 본인들이 제공하는 프로를 메뉴판처럼 만들어주면 좋겠죠.
예를 들어,
1. 스즈메의 문단속
2. 아바타
3. 1917
▲ 영화서비스 API
: 영화서버와 손님이 영화를 주고받기 위한 방법임
여기서 방법? 이라는 말이 추상적으로 들리지만 걍 코드입니다
db.collection('영화').findOne({_id:parseInt(요청.params.id)},function(에러,결과){
console.log(결과);
res.render('detail.ejs',{data:결과});
})
이 코드를 실행하면 DB에서 영화 뽑아서 보여줌
유저가 이 코드를 어떻게 실행시키죠?
그래서, 위에 get 요청 코드를 붙여야 합니다
// 이 url 로 요청하면~
app.get('/detail/:id,function(req,res)'){
// 이 부분이 API 임. 이 코드 실행해주셈
db.collection('영화').findOne({_id:parseInt(요청.params.id)},function(에러,결과){
console.log(결과);
res.render('detail.ejs',{data:결과});
})
우리가 영화를 보고싶을때마다 이 API를 유저가 요청하면 된다
(유저도 get요청하는 코드를 짜야 영화를 볼수잇음)
API 형식
(GET 요청)comic.naver.com/webtoon/detail?id=318995
1. Method
: 요청방식이 들어가야
데이터를 달라고 할것인지, 데이터를 보낼것인지?
(ex. GET 요청)
2. Endpoint
: 무슨자료를 요청할지
어떤 데이터를 요청할거냐
웹툰? 댓글? 뉴스?
(ex.comic.naver.com/webtoon)
3. 파라미터
:자료요청에 필요한 추가정보
내 아아디, 이름, 몇화보고 싶은지 등
(ex.id=318995)
추가로, 웹의 경우, REST API 라는 원칙에 따라 작성하면 좋음! (REST API 는 방법론 같은거)
다음 게시물에서 설명함
OPEN API
OPEN API 라는 것도 있는데요.
정부에서 제공하는 공공데이터의 경우, 쉽게 접근할 수 있도록 OPEN API 형태로 공공데이터를 제공하고 있습니다.
이 API 에는 OPEN 이라는 키워드가 붙어 있지만, '무제한으로 이용할 수 있다'는 의미는 아닙니다
API 마다 정해진 이용수칙이 있고, 그 이용수칙에 따라 제한사항(가격, 정보의 제한)등이 있을 수 있습니다.
API KEY
API를 이용하기 위해서는 API key 가 필요합니다. API key는 서버의 문을 여는 열쇠입니다.
서버를 운용하는데 비용이 발생하기 때문에 서버 입장에서 아무런 조건 없이 익명이 클라이언트에게 데이터를 제공할 의무는 없습니다
API key 가 필요한 경우에는 로그인한 사용자에게 자원에 접근할 수 있는 권한을 API key 형태로 제공하고,
데이터를 요청할때, API key를 같이 전달해야 원하는 응답을 받을 수 있습니다
'Web system' 카테고리의 다른 글
웹표준이란? (2) | 2023.04.27 |
---|---|
REST API와 REST 성숙도 모델 (0) | 2023.03.29 |
SSR과 CSR 비교해봄 (0) | 2023.03.28 |
AJAX 란? (feat. 필요한 부분만 데려올거야) (0) | 2023.03.28 |
HTTP 란? (feat. 서버와 클라이언트 끼리 약속~) (0) | 2023.03.28 |