SlideShare a Scribd company logo
1 of 20
AtomPub
 Atom
◦ 데이터 포멧의 규칙 ( 피드 , 엔트리 )
 AtomPub
◦ Atom 을 이용한 리소스 편집 프로토콜의 규정
◦ Atom 의 CRUD 를 위한 프로토콜
 REST
◦ 분산 네트워크 시스템의 아키텍쳐 스타일
◦ 설계 실력차에 따른 기능제공 여부
◦ REST 의 이해도가 높아야 함
 AtomPub
◦ 프로토콜 스펙
◦ REST 스타일에 기초
 Resource Model 및 Link 기능을 제공
 설계의 부분이 줄어듬
 Framework 및 Library 제공 .
컬렉션의
메타데이
터
BLOG
http://example.co
m/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

More Related Content

What's hot

Jstl_GETCHA_HANJUNG
Jstl_GETCHA_HANJUNGJstl_GETCHA_HANJUNG
Jstl_GETCHA_HANJUNGJung Han
 
톰캣 #11-팁
톰캣 #11-팁톰캣 #11-팁
톰캣 #11-팁GyuSeok Lee
 
Rb vs wp 로드타임 성능비교
Rb vs wp 로드타임 성능비교Rb vs wp 로드타임 성능비교
Rb vs wp 로드타임 성능비교Gitaek kwon
 
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기Minchul Jung
 
20131217 html5
20131217 html520131217 html5
20131217 html5DK Lee
 
다함께, FluxUtils 한바퀴!
다함께, FluxUtils 한바퀴!다함께, FluxUtils 한바퀴!
다함께, FluxUtils 한바퀴!우영 주
 
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)EunChul Shin
 
20141229 dklee docker
20141229 dklee docker20141229 dklee docker
20141229 dklee dockerDK Lee
 
스프링 3.0 RESTful & restTemplate
스프링 3.0  RESTful & restTemplate스프링 3.0  RESTful & restTemplate
스프링 3.0 RESTful & restTemplateisyoon
 
Creating autoscaling web server
Creating autoscaling web serverCreating autoscaling web server
Creating autoscaling web serverSoojin Lee
 
톰캣 #08-웹서버 연동
톰캣 #08-웹서버 연동톰캣 #08-웹서버 연동
톰캣 #08-웹서버 연동GyuSeok Lee
 
맛만 보자 Undertow
맛만 보자 Undertow맛만 보자 Undertow
맛만 보자 Undertowjbugkorea
 
톰캣 운영 노하우
톰캣 운영 노하우톰캣 운영 노하우
톰캣 운영 노하우jieunsys
 
Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개흥배 최
 
Spring-Boot (springcamp2014)
Spring-Boot (springcamp2014)Spring-Boot (springcamp2014)
Spring-Boot (springcamp2014)sung yong jung
 
2014년 02월 XE세미나 XE서버서능개선
2014년 02월 XE세미나 XE서버서능개선2014년 02월 XE세미나 XE서버서능개선
2014년 02월 XE세미나 XE서버서능개선Sol Kim
 

What's hot (20)

Jstl_GETCHA_HANJUNG
Jstl_GETCHA_HANJUNGJstl_GETCHA_HANJUNG
Jstl_GETCHA_HANJUNG
 
톰캣 #11-팁
톰캣 #11-팁톰캣 #11-팁
톰캣 #11-팁
 
Rb vs wp 로드타임 성능비교
Rb vs wp 로드타임 성능비교Rb vs wp 로드타임 성능비교
Rb vs wp 로드타임 성능비교
 
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
 
20131217 html5
20131217 html520131217 html5
20131217 html5
 
다함께, FluxUtils 한바퀴!
다함께, FluxUtils 한바퀴!다함께, FluxUtils 한바퀴!
다함께, FluxUtils 한바퀴!
 
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
 
20141229 dklee docker
20141229 dklee docker20141229 dklee docker
20141229 dklee docker
 
One-day-codelab
One-day-codelabOne-day-codelab
One-day-codelab
 
스프링 3.0 RESTful & restTemplate
스프링 3.0  RESTful & restTemplate스프링 3.0  RESTful & restTemplate
스프링 3.0 RESTful & restTemplate
 
Creating autoscaling web server
Creating autoscaling web serverCreating autoscaling web server
Creating autoscaling web server
 
톰캣 #08-웹서버 연동
톰캣 #08-웹서버 연동톰캣 #08-웹서버 연동
톰캣 #08-웹서버 연동
 
게이트단의 보안
게이트단의 보안게이트단의 보안
게이트단의 보안
 
맛만 보자 Undertow
맛만 보자 Undertow맛만 보자 Undertow
맛만 보자 Undertow
 
톰캣 운영 노하우
톰캣 운영 노하우톰캣 운영 노하우
톰캣 운영 노하우
 
Spring boot actuator
Spring boot   actuatorSpring boot   actuator
Spring boot actuator
 
Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개
 
Spring-Boot (springcamp2014)
Spring-Boot (springcamp2014)Spring-Boot (springcamp2014)
Spring-Boot (springcamp2014)
 
2014년 02월 XE세미나 XE서버서능개선
2014년 02월 XE세미나 XE서버서능개선2014년 02월 XE세미나 XE서버서능개선
2014년 02월 XE세미나 XE서버서능개선
 
Spring Boot 1
Spring Boot 1Spring Boot 1
Spring Boot 1
 

Similar to Atom publishing protocol 2003

대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. rest대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. restTerry Cho
 
Http 헤더
Http 헤더Http 헤더
Http 헤더kidoki
 
REST Ovewview
REST OvewviewREST Ovewview
REST OvewviewTerry Cho
 
HTTP 완벽가이드- 19장 배포시스템
HTTP 완벽가이드- 19장 배포시스템HTTP 완벽가이드- 19장 배포시스템
HTTP 완벽가이드- 19장 배포시스템박 민규
 
[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How To[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How ToJi-Woong Choi
 
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3Ji-Woong Choi
 
REST API 설계
REST API 설계REST API 설계
REST API 설계Terry Cho
 
Kubernetes on Premise Practical Guide
Kubernetes on Premise Practical GuideKubernetes on Premise Practical Guide
Kubernetes on Premise Practical GuideChan Shik Lim
 
Google Protocol buffer
Google Protocol bufferGoogle Protocol buffer
Google Protocol bufferknight1128
 
Polymer따라잡기
Polymer따라잡기Polymer따라잡기
Polymer따라잡기Han Jung Hyun
 
[오픈소스컨설팅] Atlassian webinar 기본 트러블슈팅(1 of 2)
[오픈소스컨설팅] Atlassian webinar 기본 트러블슈팅(1 of 2)[오픈소스컨설팅] Atlassian webinar 기본 트러블슈팅(1 of 2)
[오픈소스컨설팅] Atlassian webinar 기본 트러블슈팅(1 of 2)Osc Osc
 
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요dgmit2009
 
[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발NAVER D2
 
백기선의 스프링 부트
백기선의 스프링 부트백기선의 스프링 부트
백기선의 스프링 부트Keesun Baik
 
[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우NAVER D2
 
Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료Han Sung Kim
 

Similar to Atom publishing protocol 2003 (20)

대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. rest대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. rest
 
Servlet3
Servlet3Servlet3
Servlet3
 
Http 헤더
Http 헤더Http 헤더
Http 헤더
 
REST Ovewview
REST OvewviewREST Ovewview
REST Ovewview
 
HTTP 완벽가이드- 19장 배포시스템
HTTP 완벽가이드- 19장 배포시스템HTTP 완벽가이드- 19장 배포시스템
HTTP 완벽가이드- 19장 배포시스템
 
[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How To[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How To
 
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
 
REST API 설계
REST API 설계REST API 설계
REST API 설계
 
Kubernetes on Premise Practical Guide
Kubernetes on Premise Practical GuideKubernetes on Premise Practical Guide
Kubernetes on Premise Practical Guide
 
Google Protocol buffer
Google Protocol bufferGoogle Protocol buffer
Google Protocol buffer
 
Polymer따라잡기
Polymer따라잡기Polymer따라잡기
Polymer따라잡기
 
스프링 3.0 & RESTful
스프링 3.0 & RESTful스프링 3.0 & RESTful
스프링 3.0 & RESTful
 
Web server
Web serverWeb server
Web server
 
[오픈소스컨설팅] Atlassian webinar 기본 트러블슈팅(1 of 2)
[오픈소스컨설팅] Atlassian webinar 기본 트러블슈팅(1 of 2)[오픈소스컨설팅] Atlassian webinar 기본 트러블슈팅(1 of 2)
[오픈소스컨설팅] Atlassian webinar 기본 트러블슈팅(1 of 2)
 
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
 
[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발
 
백기선의 스프링 부트
백기선의 스프링 부트백기선의 스프링 부트
백기선의 스프링 부트
 
[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우
 
Html5
Html5 Html5
Html5
 
Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료
 

Atom publishing protocol 2003

  • 2.  Atom ◦ 데이터 포멧의 규칙 ( 피드 , 엔트리 )  AtomPub ◦ Atom 을 이용한 리소스 편집 프로토콜의 규정 ◦ Atom 의 CRUD 를 위한 프로토콜
  • 3.  REST ◦ 분산 네트워크 시스템의 아키텍쳐 스타일 ◦ 설계 실력차에 따른 기능제공 여부 ◦ REST 의 이해도가 높아야 함  AtomPub ◦ 프로토콜 스펙 ◦ REST 스타일에 기초  Resource Model 및 Link 기능을 제공  설계의 부분이 줄어듬  Framework 및 Library 제공 .
  • 5. BLOG http://example.co m/feed Read: GET Update : PUT Create : POST Delete : DELETE
  • 6.  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>
  • 7.  엔트리 단위에서의 조작 ◦ Feed 의 Entry 는 고유의 URI 를 가짐 . ◦ 각각의 URI 는 HTTP 를 통해 CRUD 가 가능함 ◦ Link URI 의 rel=“edit” 가 포함된 요소를 [Edit Link]
  • 8.  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 의 종류에 따라 바뀐다 .
  • 9.  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
  • 10.  엔트리를 삭제할 수 있다 .  Request ◦ DELETE /entry/1234.atom HTTP/1.1 ◦ Host: blog.example.com ◦ Authorization: Basic dXNIcjpwYXNz  Request ◦ HTTP/1.1 200 OK
  • 11.  컬렉션 리소스에 작성한다 .  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>
  • 12.  작성된 결과를 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>
  • 13.  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>
  • 14.  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 동일함 .
  • 15.  여러 컬렉션 리소스의 메타 정보를 저장 및 기술한 문 서 ◦ 컬렉션 리소스  유저 정보 , 미디어 정보  Feed  Entry 등
  • 16. 서비스 문 서 332 Page 응답 참고 반드시 하나이 상 존재 함 Workspace 는 0 개 이상 의 Collection 을 가짐 334 Page <Collection> 요소 참고 Media 컬렉션에서 받을 수 있는 Media Type 들 . 생략 시 기본 accept Feed 컬렉션에서 사용 가능한 Category. Fixed 가 yes 일 때 , 그 외의 카테고리는 사용 불가능하다 .
  • 17. 카테고리 문서는 따 로 관리가 가능하다 .
  • 18.  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>
  • 19.  카테고리의 추가에 관해서는 스펙이 없음 .  일반적으로 블로그의 Tag 와 유사함 .  Fixed 가 no 이고 카테고리의 추가가 필요하다 면 서버에서 해당 부분을 구현해야 함 .  반대로 fixed 가 yes 일 때에는 AtomPub 와 다른 인터페이스로 카테고리 정보를 편집할 수 있게 해야 함 .
  • 20.  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