이 문서에서는 쿼리의 데이터 유형, 결과 예시 등 Google Data API에서 사용하는 프로토콜의 기본사항을 설명합니다.
Google 데이터 API에 관한 자세한 내용은 Google 데이터 개발자 가이드 문서 및 참조 가이드를 참고하세요.
대상
이 문서는 Google 데이터 API에서 사용하는 XML 형식 및 프로토콜에 대한 일반적인 개념을 이해하려는 사용자를 대상으로 합니다.
언어별 클라이언트 라이브러리를 사용하는 코드를 작성하려는 경우에도 이 문서를 읽으면서 클라이언트 라이브러리 추상화 레이어의 내용을 이해하는 것이 좋습니다.
이 문서에서는 사용자가 HTTP, XML, 네임스페이스, 신디케이션 피드, GET
, POST
, PUT
, DELETE
요청의 기본사항과 HTTP의 '리소스' 개념을 이해하고 있다고 가정합니다. 이에 대한 자세한 내용은 이 문서의 추가 리소스 섹션을 참고하세요.
이 문서에서는 특정 프로그래밍 언어를 사용하지 않습니다. 클라이언트는 HTTP 요청을 보내고 XML 기반 응답을 파싱할 수 있는 프로그래밍 언어를 사용하여 서버와 상호작용할 수 있습니다.
예
다음 예는 일반 서비스에 전송할 수 있는 기본 Data API 프로토콜 요청과 그 결과를 보여줍니다. 다양한 프로그래밍 언어를 사용하여 요청을 보내는 방법의 예는 언어별 샘플 및 클라이언트 라이브러리를 참고하세요. 특정 Google 서비스에서 Google Data API를 사용하는 방법에 대한 자세한 내용은 서비스별 문서를 참조하세요.
피드 또는 기타 리소스 요청
/myFeed라는 피드가 있다고 가정하고 현재 그 항목이 포함된 항목이 없다고 가정합니다. 이를 확인하려면 다음 요청을 서버로 전송합니다.
GET /myFeed
서버가 다음과 같이 응답합니다.
200 OK <?xml version="1.0"?> <feed xmlns="http://www.w3.org/2005/Atom"> <title>Foo</title> <updated>2006-01-23T16:25:00-08:00</updated> <id>http://www.example.com/myFeed</id> <author> <name>Jo March</name> </author> <link href="/myFeed" rel="self"/> </feed>
피드에는 항목이 포함되지 않지만 제목 및 작성자 이름과 같은 메타데이터는 포함됩니다.
새 항목 삽입
새 항목을 만들려면 POST
요청을 보내고 새 항목의 XML 표현을 제공합니다.
POST /myFeed <?xml version="1.0"?> <entry xmlns="http://www.w3.org/2005/Atom"> <author> <name>Elizabeth Bennet</name> <email>liz@gmail.com</email> </author> <title type="text">Entry 1</title> <content type="text">This is my entry</content> </entry>
표준 Atom <id>
, <link>
또는 <updated>
요소를 제공하지 않습니다. 서버는 POST
요청에 대한 응답으로 이러한 요소를 만듭니다. 또한 피드의 작성자가 항목의 작성자와 같을 필요는 없습니다.
서버가 다음과 같이 응답합니다.
201 CREATED <?xml version="1.0"?> <entry xmlns="http://www.w3.org/2005/Atom"> <id>http://www.example.com/id/1</id> <link rel="edit" href="http://example.com/myFeed/1/1/"/> <updated>2006-01-23T16:26:03-08:00</updated> <author> <name>Elizabeth Bennet</name> <email>liz@gmail.com</email> </author> <title type="text">Entry 1</title> <content type="text">This is my entry</content> </entry>
문자열 검색
특정 문자열에 대해 전체 텍스트 검색을 수행하려면 전체 텍스트 검색을 지원하는 서비스를 사용할 때 q
매개변수와 함께 GET
요청을 전송합니다. 쿼리 매개변수에 대한 자세한 내용은 프로토콜 참조 문서의 쿼리 요청을 참조하세요.
GET /myFeed?q=This
서버는 검색 문자열 This
와 일치하는 모든 항목으로 응답합니다. (이 경우 하나만 있습니다.)
200 OK <?xml version="1.0"?> <feed xmlns="http://www.w3.org/2005/Atom"> <title>Foo</title> <updated>2006-01-23T16:26:03-08:00</updated> <id>http://www.example.com/myFeed</id> <author> <name>Jo March</name> </author> <link href="/myFeed" rel="self"/> <entry> <id>http://www.example.com/id/1</id> <link rel="edit" href="http://example.com/myFeed/1/1/"/> <updated>2006-01-23T16:26:03-08:00</updated> <author> <name>Elizabeth Bennet</name> <email>liz@gmail.com</email> </author> <title type="text">Entry 1</title> <content type="text">This is my entry</content> </entry> </feed>
항목 업데이트
기존 항목을 업데이트하려면 항목의 수정 URI (이전 예의 서버에서 제공한 <link rel="edit">
요소)와 함께 PUT
를 사용합니다.
방화벽이 PUT
를 허용하지 않으면 HTTP POST
를 실행하고 메서드 재정의 헤더를 다음과 같이 설정합니다.
X-HTTP-Method-Override: PUT
다음 예에서는 항목의 텍스트를 이전 값('This is my entry')에서 새 값('This is my first entries')으로 변경합니다.
PUT /myFeed/1/1/ <?xml version="1.0"?> <entry xmlns="http://www.w3.org/2005/Atom"> <id>http://www.example.com/id/1</id> <link rel="edit" href="http://example.com/myFeed/1/1/"/> <updated>2006-01-23T16:28:05-08:00</updated> <author> <name>Elizabeth Bennet</name> <email>liz@gmail.com</email> </author> <title type="text">Entry 1</title> <content type="text">This is my first entry.</content> </entry>
서버가 다음과 같이 응답합니다.
200 OK <?xml version="1.0"?> <entry xmlns="http://www.w3.org/2005/Atom"> <id>http://www.example.com/id/1</id> <link rel="edit" href="http://example.com/myFeed/1/2/"/> <updated>2006-01-23T16:28:05-08:00</updated> <author> <name>Elizabeth Bennet</name> <email>liz@gmail.com</email> </author> <title type="text">Entry 1</title> <content type="text">This is my first entry.</content> </entry>
수정 URI는 이제 '/1/'이 아닌 '/2/'로 끝납니다. 수정 URI의 마지막 번호는 버전 번호입니다. 버전에 관한 자세한 내용은 프로토콜 참조 문서의 낙관적 동시 실행 섹션을 참고하세요.
컨텍스트에서 새 항목을 보려면 전체 리소스를 다시 요청하세요.
GET /myFeed
서버가 다음과 같이 응답합니다.
200 OK <?xml version="1.0"?> <feed xmlns="http://www.w3.org/2005/Atom"> <title>Foo</title> <updated>2006-01-23T16:28:05-08:00</updated> <id>http://www.example.com/myFeed</id> <author> <name>Jo March</name> </author> <link href="/myFeed" rel="self"/> <entry> <id>http://www.example.com/id/1</id> <link rel="edit" href="http://example.com/myFeed/1/2/"/> <updated>2006-01-23T16:28:05-08:00</updated> <author> <name>Elizabeth Bennet</name> <email>liz@gmail.com</email> </author> <title type="text">Entry 1</title> <content type="text">This is my first entry.</content> </entry> </feed>
항목 삭제
기존 항목을 삭제하려면 항목의 수정 URI를 사용하여 DELETE
요청을 전송합니다 (이전 예시의 서버에서 제공).
방화벽이 DELETE
를 허용하지 않으면 HTTP POST
를 실행하고 메서드 재정의 헤더를 다음과 같이 설정합니다.
X-HTTP-Method-Override: DELETE
다음 예시에서는 항목을 삭제합니다.
DELETE /myFeed/1/2/
서버가 다음과 같이 응답합니다.
200 OK
다른 GET
를 실행하여 이제 피드에 항목이 없음을 확인합니다.
GET /myFeed
서버가 다음과 같이 응답합니다.
200 OK <?xml version="1.0"?> <feed xmlns="http://www.w3.org/2005/Atom"> <title>Foo</title> <updated>2006-01-23T16:30:11-08:00</updated> <id>http://www.example.com/myFeed</id> <author> <name>Jo March</name> </author> <link href="/myFeed" rel="self"/> </feed>
삭제에 실패하면 서버에서 오류 코드로 응답합니다. 자세한 내용은 프로토콜 참조 문서의 HTTP 상태 코드를 참고하세요.
추가 리소스
다음과 같은 타사 문서가 유용할 수 있습니다.
- IBM Atom 개요
- HTTP 1.1 메서드 정의:
GET
,POST
,PUT
,DELETE
사양 - HTTP 1.1 상태 코드 정의
- REST 프로토콜을 만드는 방법
- REST 방식으로 웹 서비스 빌드하기
- XML의 기술 소개
- XML 네임스페이스 예