atom publishing protocol 2003

20
AtomPub

Upload: rooya85

Post on 08-Aug-2015

358 views

Category:

Documents


1 download

TRANSCRIPT

AtomPub

Atom◦ 데이터 포멧의 규칙 ( 피드 , 엔트리 )

AtomPub◦ Atom 을 이용한 리소스 편집 프로토콜의 규정◦ Atom 의 CRUD 를 위한 프로토콜

REST◦ 분산 네트워크 시스템의 아키텍쳐 스타일◦ 설계 실력차에 따른 기능제공 여부◦ REST 의 이해도가 높아야 함

AtomPub◦ 프로토콜 스펙◦ REST 스타일에 기초

Resource Model 및 Link 기능을 제공 설계의 부분이 줄어듬

Framework 및 Library 제공 .

컬렉션의메타데이

BLOGhttp://

example.com/feed

Read: GET

Update : PUT

Create : POST

Delete : DELETE

Request◦ GET /feed HTTP/1.1◦ Host:blog.example.com

Response◦ HTTP/1.1 200 OK◦ Content-Type:application/atom+xml; type=feed

◦ <feed xmlns=http://www.w3.org/2005/Atom>◦ <id>……</id>◦ ……◦ </feed>

엔트리 단위에서의 조작◦ Feed 의 Entry 는 고유의 URI 를 가짐 .◦ 각각의 URI 는 HTTP 를 통해 CRUD 가 가능함◦ Link URI 의 rel=“edit” 가 포함된 요소를 [Edit Link]

Edit Link = http://blog.example.com/entry/1234.atom

Request◦ GET /entry/1234.com HTTP/1.1◦ Host:blog.example.com

Response◦ HTTP/1.1 200 OK◦ Content-Type:application/atom+xml; type=entry

◦ <entry xmlns=http://www.w3.org/2005/Atom>◦ ….◦ </entry>

Resource 의 종류에 따라

바뀐다 .

GET 하여 취득한 정보를 수정하여 PUT 한다 . Request

◦ PUT /entry/1234.atom HTTP/1.1◦ Host: blog.example.com◦ Authorization: Basic dXNIcjpwYXNz◦ Content-Type: application/atom+xml; type=entry

◦ <entry ….>◦ …..◦ <updated>2010-08-24T13:11:54Z</updated>◦ <content> 수정했어요 </content>◦ </entry>

Response◦ HTTP/1.1 200 OK

엔트리를 삭제할 수 있다 . Request

◦ DELETE /entry/1234.atom HTTP/1.1◦ Host: blog.example.com◦ Authorization: Basic dXNIcjpwYXNz

Request◦ HTTP/1.1 200 OK

컬렉션 리소스에 작성한다 . Request

◦ POST /feed HTTP/1.1◦ Host: blog.example.com◦ Authorization: Basic dXNIcjpwYXNz◦ Content-Type: application/atom+xml; type=entry

◦ <entry ….>◦ <id> 고유한 중복되지 않는 ID</id>◦ <title> 테스트 </title>◦ <author><name>mcJang</name></author>◦ <updated>2010-08-24T16:11:54Z</updated>◦ <content> 새로운 컨텐츠 </content>◦ </entry>

작성된 결과를 Return 한다 . Response

◦ HTTP/1.1 201 Created◦ Location: http://blog.example.com/entry/1235.atom◦ Content-Type: application/atom+xml; type=entry

◦ <entry ….>◦ <id>tag:blog.example.com,2010-08-24:entry:1235</id>◦ <title> 테스트 </title>◦ <author><name>mcJang</name></author>◦ <updated>2010-08-24T13:11:55Z</updated>◦ <link href=http://blog.example.com/entry/1235

rel=“alternate”/>◦ <link href=http://blog.example.com/entry/1235 .atom

rel=“edit”/>◦ <content> 새로운 컨텐츠 </content>◦ </entry>

Request◦ POST /media HTTP/1.1◦ Host: blog.example.com◦ Content-Type: image/jpeg◦ Authorization: Basic dXNIcjpwYXNz◦ Slug: Good_To_See_U

Response◦ HTTP/1.1 201 Created◦ Content-Type: application/atom+xml;◦ Location: http://blog.example.com/media/Good_To_See_U

◦ <entry….>◦ <id>tag:blog.example.com,2010-10-04:blog:media:Good_To_See_U</id>◦ <title>Good_To_See_U</title>◦ <author><name>test</name></author>◦ <content type=“image/jpeg” src=http://.../media/Good_To_See_U.jpg/>◦ <link rel=“edit-media” href=http://.../media/Good_To_See_U.jpg/>

//media edit◦ <link rel=“edit” href=http://.../media/Good_To_See_U.atom/> // entry edit◦ </entry>

Request◦ PUT /media/Good_To_See_U.jpg HTTP/1.1◦ Host: blog.example.com◦ Content-Type: image/jpeg◦ Authorization: Basic dXNIcjpwYXNz

Response◦ HTTP/1.1 200 OK

Delete 및 GET 동일함 .

여러 컬렉션 리소스의 메타 정보를 저장 및 기술한 문서◦ 컬렉션 리소스

유저 정보 , 미디어 정보 Feed

Entry 등

서비스 문서

332 Page 응답 참고

반드시 하나이상 존재

Workspace 는 0 개 이상의 Collection 을

가짐334 Page

<Collection> 요소 참고

Media 컬렉션에서 받을 수 있는

Media Type 들 .

생략 시 기본 accept

Feed 컬렉션에서 사용 가능한 Category.Fixed 가 yes 일 때 ,

그 외의 카테고리는 사용 불가능하다 .

카테고리 문서는 따로 관리가 가능하다 .

Request◦ GET /atomcat HTTP/1.1◦ Host: blog.example.com

Response◦ HTTP/1.1 200 OK◦ Content-Type: application/atomcat+xml

◦ <category fixed=“no”….> <atom:category term=“ 일상” /> <atom:category term=“ 기술” />

◦ </category>

카테고리의 추가에 관해서는 스펙이 없음 . 일반적으로 블로그의 Tag 와 유사함 . Fixed 가 no 이고 카테고리의 추가가 필요하다면

서버에서 해당 부분을 구현해야 함 . 반대로 fixed 가 yes 일 때에는 AtomPub 와

다른 인터페이스로 카테고리 정보를 편집할 수 있게 해야 함 .

AtomPub : Atom 리소스를 CRUD 하는 Web API 를 위한 프로토콜

Google 은 AtomPub 을 베이스로한 Gdata 를 사용해 블로그 , 캘린터 , 스프레드시트 , 앨범등을 편집할 수 있는 Web API 제공

Good◦ 블로그 서비스의 API◦ 검색 기능을 가진 데이터베이스의 API◦ 멀티미디어 파일의 Repository 의 API◦ 태그 (Tag) 를 사용한 소셜 서비스의 API

Bad◦ Comet 을 이용하는 실시간성이 중요한 API◦ 영상의 스트림 전송 등 HTTP 이외의 프로토콜을 필요로 하는

API◦ 데이터의 계층 구조가 중요한 API◦ Atom 포멧이 제공하는 메타 데이터가 불필요한 API