혜미의 개발 일지

[API] API 개념 본문

프론트/ajax 및 API

[API] API 개념

혜미 2022. 2. 17. 17:05
반응형

 

저는 개인적으로 API는 어떤 데이터집합의 통신 매개체이고 즉, 데이터집합체에 들어가기위한 게이트웨이(입구)이고, 토큰은 그 게이트웨이에서 데이터를 받기위한 열쇠,키와 같은 개념 라고 이해했습니다.

 

 

API(애플리케이션 프로그래밍 인터페이스)란 - 개념, 기능, 장점

API(애플리케이션 프로그래밍 인터페이스)란 애플리케이션 소프트웨어의 개발 및 통합에 사용되는 정의 및 프로토콜 세트를 뜻하며, 개발 민첩성과 간소화를 지원합니다.

www.redhat.com

API에 대한 이해는 여기 사이트에 잘 설명이 되어있어 참조하면 좋을 것 같습니다.

 

API의 개념과 용어정의를 위해 네이버 https://developers.naver.com

 

NAVER Developers

네이버 오픈 API들을 활용해 개발자들이 다양한 애플리케이션을 개발할 수 있도록 API 가이드와 SDK를 제공합니다. 제공중인 오픈 API에는 네이버 로그인, 검색, 단축URL, 캡차를 비롯 기계번역, 음

developers.naver.com

사이트에서 말하는 API 용어정리 및 개념을 가지고 왔습니다.

용어 정리 

오픈 API와 관련된 용어가 다양한 의미로 사용되고 있어 오픈 API를 처음 접하는 개발자나 기존의 개발자에게 혼란을 주기도 합니다. 여기서는 오픈 API를 사용하는 개발자가 혼란을 느끼지 않게 네이버 개발자센터에서 사용하는 오픈 API 관련 개념들을 정확하게 정의해 정리했습니다.

API의 기본 

API(application programming interface) 

운영체제나 시스템, 애플리케이션, 라이브러리 등을 활용해 응용 프로그램을 작성할 수 있게 하는 다양한 인터페이스를 의미합니다. Window API, Java API, HTML5 API, Android API 등이 있습니다.

오픈 API 

API 중에서 플랫폼의 기능 또는 콘텐츠를 외부에서 웹 프로토콜(HTTP)로 호출해 사용할 수 있게 개방(open)한 API를 의미합니다. 네이버 개발자센터에서 제공하고 있는 지도, 검색을 비롯 기계 번역, 캡차, 단축 URL 등 대부분 API는 HTTP로 호출할 수 있는 오픈 API에 해당합니다.

애플리케이션 

애플리케이션은 API를 활용해 만들어진 다양한 프로그램 결과물입니다. 네이버 개발자센터에서는 개발자가 네이버 오픈API를 활용해 웹 서비스, 모바일 웹 서비스, 모바일 앱 등을 의미합니다. 네이버 오픈API를 이용하려면 네이버 개발자센터의 애플리케이션 등록 메뉴에서 애플리케이션 정보를 등록해야 합니다.

API 인증 

API 게이트웨이 

네이버 오픈API는 대부분 https://openapi.naver.com/ 서버를 통해 API를 호출합니다. 이 서버가 바로 API 게이트웨이 서버입니다. API 게이트웨이는 오픈 API 호출이 들어오면 API 호출이 정확한지, 인증된 사용자의 호출인지, 호출 허용량이 맞는지 등을 확인한 다음 실제 각 API 서버를 호출한 결괏값을 반환합니다. 잘못된 호출이 들어오면 오류 코드와 오류 메시지를 반환합니다.

API 키 또는 키 

2016년 1월 26일 이전에는 네이버 오픈API를 이용할 때 각 API별로 API 키를 발급받았습니다. API 키는 인증된 사용자임을 입증하는 고유한 텍스트 문자열입니다. API를 호출할 때 API 키를 API 게이트웨이 서버에 함께 전송해 인증된 사용자임을 입증했습니다. 2016년 1월 26일 이후에는 인증에 API 키를 더 이상 사용하지 않고 클라이언트 아이디와 클라이언트 시크릿을 사용합니다.

클라이언트 아이디와 클라이언트 시크릿 

네이버 오픈API 사용자가 인증된 사용자인지를 확인하는 고유한 아이디와 비밀번호입니다. 네이버 개발자센터의 애플리케이션 등록 메뉴에서 애플리케이션을 등록하면 발급되는 값입니다.

API 호출 

요청 URL(request URL) 

오픈 API를 호출하기 위한 API의 웹 주소(URL)를 의미합니다. 2016년 1월 26일 이전에는 http://openapi.naver.com를 요청 URL로 사용했습니다. 2016년 1월 26일 이후에는 https://openapi.naver.com/버전/서비스구분/API 구분 형태의 요청 URL을 사용합니다.

요청 변수(request parameter) 

오픈 API를 호출할 때 함께 서버로 전송해야 하는 값입니다. API 레퍼런스를 참고해 요청 변수의 이름이 틀리거나 필수 요청 변수가 누락되지 않도록 주의해야 합니다.

URL 인코딩 

한글이나 특수 문자가 요청 변수의 값에 포함되어 있으면 서버로 요청을 전송할 때 값이 깨지기 때문에 지정된 규칙에 따라 문잣값을 코드값으로 변환해서 전송합니다. 이 변환을 URL 인코딩이라 합니다. URL 인코딩이 적용된 값을 다시 원래의 값으로 변환하는 것을 URL 디코딩이라고 합니다.

HTTP 

메서드(method) 

HTTP 프로토콜에서 웹 서버가 요청과 응답 데이터를 전송할 때 사전에 약속된 동작 방식입니다. W3C에서는 GET과 POST 등 8가지의 메서드를 정의하고 있습니다. 네이버 오픈API를 호출하기 위해 서버로 요청을 보낼 때 반드시 API 레퍼런스에 지정된 메서드로 API를 호출해야 합니다.

HTTP 헤더 

HTTP 헤더에는 웹 서버로 보내는 요청과 요청 데이터를 설명하는 메타 정보가 있습니다. 즉, 메서드가 무엇인지, 요청 URL이 무엇인지에 관한 정보와 HTTP 프로토콜 버전 등이 들어 있습니다. 여기에 추가적으로 지정된 이름과 값을 전송할 수 있습니다. 네이버 오픈API를 이용할 때는 클라이언트 아이디와 클라이언트 시크릿을 헤더에 기본으로 포함해 전송해야 합니다.

HTTP 상태 코드 

웹 서버로 API 요청을 보내면 웹 서버에서는 API 호출이 정상적으로 되었는지에 대한 응답을 HTTP 상태 코드 값과 함께 반환합니다. 예를 들어 호출이 정상적으로 이뤄졌을 때는 상태 코드로 200을 반환합니다. API 호출 방법이 잘못되어 오류가 발생했을 때는 400, 403, 404 등을 상태 코드로 반환합니다. 서버에 오류가 있을 때는 500을 상태 코드로 반환합니다. 네이버 오픈API에서 사용하는 상태 코드는 "오류 코드"를 참고하십시오.

인증과 OAuth 2.0 

인증은 어떤 사용자가 본인 자신임을 식별하는 것입니다. 일반적으로 아이디와 암호가 일치하면 사용자가 본인이라고 판단합니다. 네이버에 로그인할 때 네이버 사용자가 네이버 아이디와 암호를 입력해서 로그인하는 것이라 생각하면 됩니다. 그러나 제삼자가 네이버 오픈API를 이용해서 만든 애플리케이션에 사용자가 네이버 아이디와 암호를 직접 입력하면 보안 문제가 발생할 수 있습니다. 이런 때에는 제삼자가 만든 애플리케이션이 아니라 네이버의 아이디와 암호를 입력받는 서비스가 인증을 하고 인증 성공 여부를 애플리케이션에 전달하게 하면 사용자는 안심하고 애플리케이션을 사용할 수 있습니다. 이러한 절차를 정의한 표준이 OAuth입니다. 네이버 오픈API는 OAuth 2.0을 인증 서비스에 적용하고 있습니다.

접근 토큰(access token) 

OAuth 2.0으로 인증에 성공하면 네이버 플랫폼에서는 접근 토큰(access token)이라는 복잡한 문자열을 애플리케이션에 전달합니다. 이 값은 로그인 방식 오픈 API를 호출할 때 사용합니다. 네이버 오픈API 중에서 회원 프로필 조회, 카페 가입과 같은 기능을 제공하는 API는 회원 인증이 완료되어야만 API를 호출할 수 있는 API입니다. 이런 오픈 API를 호출할 때는 요청 헤더에 접근 토큰을 함께 보내야 합니다.

 

참조 https://developers.naver.com/docs/common/openapiguide/apiterms.md#api%EC%9D%98-%EA%B8%B0%EB%B3%B8 네이버 API공통 가이드

 

그래서 제가 그냥 이해한 느낌으로는

API는 개발자들이 어떤 DB와의 응답이 필요한데 그걸 API로 통신해서 클라이언트에게 표출하기위한 매개체로 보면 될 것 같습니다.  

DB응답 내용을 클라이언트들에게 직접적으로 공개할 수 없으니까 생긴거고 외부인은 보안상 DB를 직접적으로 들어가면 안되니까 키도 있고 뭐 그렇게 해서 만들어진 개념이라고 이해했습니다.

그래서 각각 자회사들마다 회사의 API가 이미 있고 개발해야하는 경우가 많은데 그걸 만든 개발자들이 각각 다르기 때문에 회사마다 API 방식이 다르고 그에 따라야하는 규칙과 가이드가 있는 것입니다.

그리고 우리는 그 데이터를 이용하려면 어쩔 수 없이 그 가이드라인을 따라야하기때문에

이러한 글들을 잘 찾아보고 읽은 다음 가이드라인을따라 기능을 가져온다거나, 새로운 API를 만들기 위해 rest API를 공부해야하는 것이 백엔드 개발자의 또 하나의 역량이라고 볼 수 있겠습니다.

 

참고 : 필자도 아직 공부중이며 부족한 점들이 많다는 점, 내용이나 개념이 아직 확실치 않다는 점과 이 모든 것은 필자의 개인 생각임을 유의하며 읽어주시길 바랍니다. 만일, 잘못된 정보나 지식이 있다면 알려주시길 바랍니다.

반응형
BIG

'프론트 > ajax 및 API' 카테고리의 다른 글

[API] API로 날씨와 지도 구현하기  (0) 2022.02.24
[Tools] API postman  (0) 2022.02.18
[API] SNS 로그인 API 사용하기  (0) 2022.02.17
Comments