Google Data API 프로토콜 기본사항

이 문서에서는 쿼리의 데이터 유형, 결과 예시 등 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 상태 코드를 참고하세요.

추가 리소스

다음과 같은 타사 문서가 유용할 수 있습니다.

맨 위로