👩‍💻

서버 개발 - API

💡
서버 개발자가 하는 일 : API 만들기 = 뒷 단 로직 짜기
 
API를 들어 봤다면?

플랫폼 기업에서 제공하는 Open API

가장 대표적인 건 소셜로그인 API
notion imagenotion image
notion imagenotion image
notion imagenotion image
notion imagenotion image
 
사실상 외부에 공개하지 않는 것들이 대부분.

회사 서비스의 모든 로직은 API로 만들어집니다.

 
notion imagenotion image
 
 
 

API란?

Application Programming interface 응용 프로그래밍 인터페이스
컴퓨터와 컴퓨터 시스템끼리 정보를 교환하는 공유경계이다.
= 클라이언트와 서버 사이에 통신하는 로직
notion imagenotion image
 
쉽게 예시를 들어서 설명해 볼게요.
ex. 유저의 스마트폰(클라이언트 컴퓨터)에서 ‘로그인’을 하고 싶다?
notion imagenotion image
notion imagenotion image
(이미지 출처 : 최원영님)
 

—> 그럼 그걸 카카오의 컴퓨터 (서버 컴퓨터)에서 처리 해줘야 하는데?

 
그러기 위해서는 컴퓨터와 컴퓨터 사이에서 ‘로그인’이라는 기능을 소통 해야 한다.
→ 로그인 API
 
IP는 서버의 주소.
notion imagenotion image
(이미지 출처 : 최원영님)
 
서버 개발자가 이 주소를 정한다.

서버 개발자가 API를 만들고, 클라 개발자는 그걸 가져다가 쓴다.

 
아래 보면, endpoint가 주소
notion imagenotion image
 
다시 이 예시로 돌아가면,
카카오의 서버 개발자들이 카카오맵 API를 만들어두었고,
notion imagenotion image
 
방배살롱의 웹 개발자(클라이언트)가 이 API를 가져다 써서 방배살롱의 유저에게 보여준다.
notion imagenotion image

 
그럼 이제 조금 더 깊이 안으로 들어가 볼게요.
 
제 폰에서 로그인 버튼을 누릅니다. 아이디와 비번을 입력하고 로그인하기를 누릅니다.
notion imagenotion image
 
notion imagenotion image
notion imagenotion image
 
 

뒤에서는 어떤 것들이 벌어진 걸까요?

 
notion imagenotion image
 
근데 앱 안에서 로그인 말고 엄청 여러가지 활동을 하죠.
notion imagenotion image
 
 
notion imagenotion image
클라이언트에서 보내는 Request에는 4가지의 종류가 있습니다.
notion imagenotion image
 
그 Request 봉다리 안에는 해당 요청내용에 맞는 내용들이 들어가야함.
notion imagenotion image
 
파라미터를 활용한다.
notion imagenotion image
 
 
다시 로그인을 생각했을 때,
내가 입력한 아이디/비밀번호 정보에 따라서..
로그인에 성공할 수도 있고, 실패할 수도 있다.
notion imagenotion image
notion imagenotion image
 
 

이걸 Response(응답)라고 한다.

 
notion imagenotion image
→ 그 케이스를 모두 고려해서 서버 개발자는 코드를 짠다.
 
클라에서 보낸 각각의 요청 request에 대해서 서버에서는 각 요청이 잘 된 건지, 안 된건지에 대해서 response를 보낸다.
그 Response에도 규칙이 있음. 그래야 소통이 효율적이니까
notion imagenotion image
 
200은 성공
400, 500은 실패
 
100번대, 300번대는 잘 안 씀.
notion imagenotion image
 
서버는 잘 돌아가고 있는데, 클라이언트가 보낸 요청이 실수 때문에 오류가 나는 건 다 400번대.
500번대 오류는 서버에서 잘못한 거임.
그러니깐 서버 개발자가 무조건 봐야 함.
 
notion imagenotion image
페이스북 앱에서 포스팅을 하나 작성하려 합니다.
 
notion imagenotion image
 
이걸 알면 서버 개발자에게 물어봐야 할지, 클라 개발자에게 물어봐야 할지 고칠 수 있다.
 
notion imagenotion image
ex. 개발자 도구에서 확인 가능.
notion imagenotion image
 
API가 컴퓨터와 컴퓨터 사이의 소통이라면?
어떤 소프트웨어 - 다른 회사의 소프트웨어와의 소통도 API를 활용한다.
그러려면, SDK를 설치해야한다.
notion imagenotion image
 
notion imagenotion image
notion imagenotion image
그 안에는 다양한 룰들이 들어가 있음. 그걸 통으로 가지고 오는 것임.
 
 
SDK와 API의 구분은? 외부에서 우리 코드들을 사용하기 쉽게 만들어놓은 패키지가 SDK임. 카카오에서도 외부 사업자에게 우리의 SDK를 설치하라고 한다. SDK 안에는 개발에 도움이 될 개발 도구 프로그램, 디버깅 프로그램, 문서, API 등이 있다. 출처: https://you9010.tistory.com/147 [uujing의 블로그]
 
 
notion imagenotion image
💡
우리 서비스에 외부 API를 가지고 적용할 거라면? 그 API의 개발 가이드를 보면서 SDK가 마련되어 있는지 꼭 확인 해야 한다.
 

JSON 이란?

봉다리 (request / response)의 데이터 형식을 의미
notion imagenotion image
 
근데 이렇게 형식이 다 다르면, 너무 비효율적임.
왜냐면, 내가 다른 회사의 API를 쓰려고 SDK를 설치하려면 그 회사의 형식부터 익혀야하고, 새로운 개발자가 들어오면 우리 회사의 형식으로 새로 익혀야함.
 
notion imagenotion image
그래서 자주 쓰는 형식을 아예 공식화함. XML , JSON
 
데이터타입 JSON
notion imagenotion image
{ } key와 Value로 이루어져있는 형식
서버 개발자는 API 봉다리를 만들어서 클라개발자에게 주면, 그거대로 클라 개발자가 개발한다.
 

 
 
실제상황 예시 1
PM : 저번에 말씀드린 아이콘 수정은 언제까지 될까요?
개발 : 아 그게 서버에서 이미지 URL을 보내줘야 하는데, API가 미완성인 거 같아요. JSON에 아이콘 URL만 빠져 있네요. 클라는 URL이 안 오면 기본 값이 뜨게 해 놨어요.
실제상황 예시 2
개발 1 : 이거 원래 POST로 보냈을 때는, 200 왔거든요, 근데 PUT으로 바뀐 다음에 500 날라 와요.
개발 2 : 그래요? 잠시만요. 수정했어요. 근데 클라에서 보내주는 JSON에 필수 파라미터가 빠져 있네요. 412 뜰 거에요. 확인 해주세요~
 
누가 서버, 누가 클라이언트 개발자일까요?
 
예시. 짤봇
 
Random API
메인뷰에서 랜덤한 짤을 추출 API
GET | https://jjalbot.com/api/jjals/random?size=10 Parameter|{size:Int}→짤리스트개수
 
Keyword API
키워드 검색에 따른 짤 추출 API
GET | https://jjalbot.com/api/jjals?text=아이유 Parameter | { text: String } → 검색에 필요한 키워드
 

[참고] POSTMAN : API를 만들 때 협업툴
Node.js (서버) 에서 코딩을 함.
—> Postman? 클라이언트 프로그램임.
내가 너의 컴터의 주소를 알면 ?
Localhost:3000
  • 거기다가 Request를 넣는다.
-> 그럼 node.js에서 그걸 가지고 request를 수행한다음에 Response를 놓음.
 
 
💡
API를 잘 이해하는 것은 PM의 핵심 역량!
 
 
플랫폼사의 API를 직접 document로 읽을 수 있는 실력
     
     
    notion imagenotion image
    notion imagenotion image
     
    notion imagenotion image
     
     
    추가로 공부할 자료들