웹 API는 어떻게 작동합니까? [닫은]


17

Facebook, Twitter 등과 같은 많은 웹 API에 대해 들었습니다. 타사 API가 데이터를 액세스하고 조작하는 데 도움이됩니다. 웹 API의 작동 방식을 알고 싶습니다. 웹 API의 기본 사항은 무엇입니까?

사람들이 사이트에 액세스하거나 업데이트 할 수 있도록 내 사이트에 대한 API를 만들려면 무엇을 시작해야합니까?


1
중요하지는 않지만 사이트에 어떤 언어가 내장되어 있습니까?
ocodo

페이스 북 웹 API에 대한 문서를 아직 읽었습니까? developers.facebook.com/docs 아직 읽지 않았다면 왜 안됩니까? 당신이 그것을 읽을 수있는 경우, 어떤 특정 질문에 당신은 할 수 있습니까?
S.Lott

좋아, 내가 @ S.Lott 할 것입니다!
Harish Kurup

답변:


23

가장 간단한 방법으로 누구나 URL, 매개 변수 및 효과에 대한 정보를 호출하고 게시 할 수있는 일련의 GET / POST 요청을 만듭니다. 읽기 전용 작업에 대한 GET 요청 및 서버의 데이터변경하는 항목대한 POST 요청 .

필요한 경우 인증 시스템에 추가하면 간단한 웹 API가 있습니다.

웹 API는 단지입니다 인터페이스 표준을 통해 시스템 (예 : 사이트 등)에 액세스 할 수 있도록 HTTP 요청 방법 . 데이터 자체는 일반적 으로 처리하기 쉽도록 일부 표준 형식 (예 : JSON 또는 XML ) 으로 래핑됩니다 .


다음은 'TextWise'에 대한 웹 API 예입니다.


확인. JSON 또는 XML을 사용하는 것이 가장 좋은 dat 형식은 무엇입니까 ??
Harish Kurup

1
JSON-XML은 조작하기가 매우 어렵고 JSON보다 이점이 없습니다. 그리고 XML에서는 닫기 태그가 있어야하므로 오버 헤드가 큽니다.
Slawek

1
@ 해리 다시 한번, 그것은 '전적으로 당신의 목적 / 상황에 달려 있습니다'중 하나입니다. JSON 형식을 선호 할 수도 있지만 작업중인 시스템 중 하나에서 수행 한 경우 JSON이 아닌 XML 구문 분석 기능이 내장되어 있으므로 XML을 사용합니다. 즉, 코드 유지 관리가 쉬워지고 다른 개발자가 명령에 익숙해집니다.
Dan McGrath

1
@Harish, 하나를 선호하고 먼저 릴리스하는 것이 좋지만 XML과 JSON을 모두 제공하면 사용자에게 도움이됩니다.
ocodo

실제로 XML 및 JSON gzip은 유사한 파일 크기로 설정됩니다. JSON으로 전환하는 경향이 점차 보이고 있습니다 (JSON은 XML보다 최신입니다). 현재 두 가지를 모두 제공하는 것이 일반적입니다. JSON은 데이터 교환에 이상적이며 XML은 문서 교환에 이상적입니다.
Brian

5

실제로 회사 가상화 플랫폼을위한 API를 개발하고 있습니다. 몇 가지 다른 방법으로 문제를 해결할 수 있지만 내가 좋아하는 (그리고 사람들이 이해할 수있는 작업을 얻는 가장 빠른 경로)은 간단한 HTTP GET 요청을 사용하고 JSON 응답을 반환하는 것입니다.

내 URL은 다음과 같습니다.

domain.com/method/call/subcall?key=key&data=something

그런 다음 HTTP GET 변수를 분류하고 호출자가 원하는 것을 수행합니다. 내가 스택 교환 API 개발에 베타 사용자로 가입하는 가장 큰 이유 중 하나는 나는 그것이 엄청난 학습 경험이 될 것이라는 점을 알고 있었고,이었다 참으로 그것이 .

일반적으로 두 개의 JSON 인코딩 배열을 반환합니다. 하나는 result기본적으로 호출이 성공했는지 말하고 오류 코드 / 오류 문자열을 제공합니다. 다른 하나는 보통 방금 호출 data되며 그 내용은 해당 특정 호출의 문서에 설명되어 있습니다. 또한 GET 기반 API는 테스트 및 디버깅이 훨씬 쉽습니다.

SOAP / XMLRPC와 같은 다른 많은 형식이 존재합니다 .JSON을 선택하면 엄청나게 단순하고 자유롭게 선택할 수 있습니다.

예를 들어, 많은 필드 를 보내야하고 많은 GET 변수를 다루고 싶지 않다면, 이것을 할 수 있습니다 (PHP의 예)

$to_send = base64_encode(json_encode($some_array));

다른 쪽에서는 쉽게 해독되어 수십 개의 변수를 사용할 수 있지만 API를 통해 2-3 개의 GET 변수 만 허용합니다.

나는 단지 메소드와 호출을 짧고 간결하게 유지하려고 노력하고 각 호출이 균일 한 '작업 또는 실패'응답을 반환하고 요청 된 데이터가 따르는 방식으로 설계합니다.


2

그것은 실제로 매우 광범위한 질문입니다. 가장 기본적인 의미에서, 웹 API 와 같은 클라이언트 가 웹 서버에 일종의 HTTP 요청을 할 때 웹 API가 작동 합니다. 서버는 해당 요청을 검사하여 사용자가 원하는 것을 파악한 다음 클라이언트가 원하는 것을 얻기 위해 검사하는 일부 형식 (예 : 페이지)으로 데이터를 반환합니다. 이것들은 웹 API가 공통적으로 가지고있는 유일한 것입니다. 이것이 실제로 귀하의 질문에 대한 답변이 아니라는 것을 알고 있지만 질문이 너무 광범위한 이유를 밝히고 싶었습니다.

클라이언트가 요청을 형식화하거나 서버가 응답을 형식화 할 수있는 모든 종류의 방법이 있으므로 클라이언트와 서버가 이해하기 위해서는 클라이언트와 서버가 몇 가지 기본 규칙에 동의해야합니다. 일반적으로 말하자면 요즘에는 이런 종류의 물건에 사용되는 두 가지 매우 일반적인 스타일이 있습니다.

RPC (원격 프로 시저 호출)

RPC 스타일 API에는 일반적으로 전체 API에 대해 하나의 URL 만 있습니다. 수행하려는 작업에 대한 정보가 포함 된 문서를 POST하여 호출하면 서버는 원하는 작업을 수행 한 문서를 반환합니다. 일반적인 컴퓨팅 용어에서 요청 문서는 일반적으로 함수 이름과 일부 인수를 갖습니다.

이 스타일의 API에 대한 일부 표준에는 XML-RPC 및 SOAP가 포함됩니다. 이러한 표준은 작성중인 함수 호출을 설명하거나 전체 API를 설명하는 데 사용할 수있는 형식을 작성하려고합니다.

REST (Representational State Transfer)

REST 스타일 API에는 API에 대한 URL이 네임 스페이스 ( 서버 또는 서버 내에 많은 다른 오브젝트가있는 폴더)가 없으며이 네임 스페이스 내의 모든 URL이 일부가됩니다. API의. 오히려 당신이 API를 사용하려는 서버를 말하는 것보다 URL은 당신이 API를 사용하고 싶은 서버 지시 에를 . 그런 다음 HTTP 메소드와 요청 본문을 사용하여 GET (이미 존재하는 항목 검색), POST (새 항목 작성), PUT (이미 존재하는 항목 바꾸기) 또는 해당 오브젝트 대해 수행하려는 작업 설명합니다. 삭제 (이미 존재하는 것을 제거) 사용할 수있는 몇 가지 다른 동사가 있지만 가장 일반적인 동사입니다.

지금까지 REST의 표준 형식에 대해서는 언급하지 않았습니다. 이론적으로는 거의 모든 형식을 사용할 수 있습니다. HTTP는 이미 수행하고자하는 작업과 수행하고자하는 작업을 말하고 있기 때문에 요청 본문의 형식은 무엇이든 만들거나 바꿀 개체의 표현 일 수 있습니다. 그러나 실제로 REST 작성자는 가능한 모든 형식을 이해하기가 어려우므로 형식에 동의하는 경향이 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.