문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 API (문단 편집) == [[REST]]ful API == Representational State Transfer-ful API API는 기본적으로 '프로그래밍 인터페이스'인 만큼, API를 사용하는 것은 주로 프로그램 내부 단에서 이루어진다. 하지만 보다 다양한 분야에 쓰일 수 있도록 '네트워크'와 '웹'에 맞춰진 API 통신 아키텍처가 등장했는데, 그것이 바로 '''[[REST]]'''다. REST 개념은 2000년에 로이 필딩(Roy Fielding)이 최초로 소개했는데, HTTP의 주요 저자로서 웹의 활용성을 보다 늘리기 위해 고안했다. [[REST]]의 정확한 정의에 대해서는 해당 문서를 참조할 것. 다시 말해 REST란 그저 정의된 '아키텍처 스타일'로, 이는 API를 활용함에 있어서 그 API가 가져야할 디자인 철학, 혹은 미덕을 의미하며, 보다 비전공적으로 설명하자면 '[[필수요소]]' 정도로 볼 수 있다. 엄밀히 따지면 REST는 모든 '네트워크'를 위한 것이므로 네트워크가 구성된 곳이라면 어느 곳이든 사용이 가능하지만 현실적으로 99.99%의 네트워크는 우리가 소위 '인터넷'이라고 부르는 [[HTTP]] 기반 네트워크이므로 REST API라고 하면 HTTP에 쓰이는걸 의미하는 경우가 많다.[* 드물지만 [[FTP]]를 위해서 쓰이는 REST API도 있긴 하다.] 심지어 그냥 'API'라고 부르면 이 REST API를 의미하는 경우도 많아졌다. REST를 잘 준수하는 API는 따로 'RESTful API'라고 부른다. 하지만 워낙 개념이 혼용되다보니 일부 혹은 전체 요소가 전혀 'REST'하지 않아도 'RESTful API'라고 부르는 경우가 종종 있다. 엄밀히 따지면 틀린 것으로 REST 요소를 지키지 않은 HTTP API는 그냥 '웹 API'나 'HTTP API'로 불러야 한다. 프로그래밍에서 말하는 그냥 API와 뭐가 같고 뭐가 다른지 헷갈릴 수 있는데 둘다 상호 작용을 위한 인터페이스라는 점에서는 동일하다. 운영체제 혹은 다른 애플리케이션과 상호 작용하기 위해 정의된 약속을 쓰는 것이다. 예를 들어, 'printf'라는 함수를 호출해서 정해진 문자열을 출력하고, 'videos.insert'라는 메소드를 호출해서 유튜브에 영상을 추가하며, '[[https://openapi.naver.com/v1/nid/me]]'라는 HTTP 주소를 호출해서 데이터를 전송받는 것이다. 차이점이라면 REST API는 네트워크에서 '데이터'를 받아오기 위한 것이고 프로그램에서의 API는 '코드', 나아가 코드뭉치인 라이브러리를 받아오기 위해 쓰는 것이다. 따라서 개발자 입장에서 구분하자면 HTTPRequest를 보내서 JSON 또는 XML 형식으로 데이터 묶음이 온다면 보통 'REST API'[* 현재 HTTP기반의 웹 API는 태반이 REST를 일부라도 준수하는 식으로 설계되어 있다. 따라서 HTTP를 이용해서 어떤 데이터를 받는다면 십중팔구는 REST API라고 봐도 무방하다.]라고 보면 되고, 그게 아니고 기업에서 설명하는 방식대로 자신의 코드에 import하여 특정 함수나 메소드를 쓸 수 있다면 --코드에 빨간줄이 그이지 않는다면-- 일반적인 의미의 API라고 보면 된다. 또한 REST 구조는 자체 표현 구조를 지녀야 하며, 이는 달리 말하면 '텍스트'만 오가야한다는 것을 의미한다. 이미지나 동영상을 주고받고 싶다면 그 데이터 파일 자체를 보내는 것이 아니라 이미지 또는 동영상이 보관되어 있는 주소가 오는 것이다. 사실상 개발자가 아니면 사용할 일이 없는 일반적인 의미의 API와는 달리 REST API는 웹이라는 비교적 친숙한 도구를 매개체로 이용하며 결과물도 단순 텍스트다보니 좀 더 광범위하게 사용되는 편이다. 앞서 언급한 IT회사들도 단순 데이터 열람을 위해 REST API를 제공하는 경우가 많으며, 여러 데이터 열람을 위한 공공 OpenAPI나 게임회사에서 제공하는 유저 전적, 승률, 게임 내 각종 기록들도 다 REST API로 오간다. 소스코드 단계에서 상호 작용하는 일반 API와 달리 RESTful API는 웹을 이용하므로 거의 대부분 웹 프로토콜을 통해 주고 받는다. 다시 말해, GET/POST 등의 형태로 필요한 인수를 전달받으면 거기에 맞는 결과값을 [[JSON]]이나 [[XML]] 형태로 전송해준다. 이를 그대로 봐도 되긴 하지만 비전문가가 보면 알 수 없는 텍스트들의 나열로 보이기 때문에 보기 이쁜 형태로 데이터를 적당히 편집하여 보기 좋은 형태로 만드는 것이 개발자의 역할이다. 게이머라면 '전적 검색 사이트'나 '로그 조회 사이트'를 떠올리면 이해하기 쉽다. [[OP.GG]]나 [[Maple.gg]] 같은 사이트들이 바로 게임사가 제공하는 외부 API를 기반으로 돌아가는 사이트다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기