Hướng dẫn dành cho nhà phát triển: Giao thức

API Dữ liệu Blogger cho phép các ứng dụng khách xem và cập nhật nội dung trên Blogger dưới dạng nguồn cấp dữ liệu API Dữ liệu của Google.

Ứng dụng khách của bạn có thể sử dụng API Dữ liệu Blogger để tạo bài đăng mới trên blog, chỉnh sửa hoặc xoá bài đăng hiện có trên blog và truy vấn các bài đăng trên blog phù hợp với tiêu chí cụ thể.

Ngoài việc cung cấp một số thông tin cơ bản về tính năng của API dữ liệu Blogger, tài liệu này còn cung cấp các ví dụ về các lượt tương tác cơ bản với API dữ liệu bằng XML thô và HTTPS. Sau khi đọc tài liệu này, bạn có thể tìm hiểu thêm về cách tương tác với API bằng thư viện ứng dụng của chúng tôi bằng cách đọc các phần dành riêng cho ngôn ngữ lập trình trong hướng dẫn dành cho nhà phát triển này.

Nội dung

Đối tượng

Tài liệu này dành cho các lập trình viên muốn viết các ứng dụng máy khách có thể tương tác với Blogger bằng XML và HTTPS.

Tài liệu này giả định rằng bạn hiểu được các ý tưởng chung đằng sau giao thức API dữ liệu của Google.

Nếu bạn đang sử dụng hệ thống UNIX và muốn thử các ví dụ trong tài liệu này mà không viết mã, bạn có thể thấy các tiện ích dòng lệnh UNIX curl hoặc wget hữu ích; để biết thêm thông tin, hãy xem trang thủ công cho các tiện ích đó.

Để biết thông tin tham khảo về API Dữ liệu của Blogger, hãy xem Hướng dẫn tham chiếu giao thức.

Bắt đầu

Tạo tài khoản Blogger

Bạn nên đăng ký tài khoản Blogger để tham gia thử nghiệm. Blogger sử dụng Tài khoản Google, do đó, nếu bạn đã có Tài khoản Google, thì bạn đã sẵn sàng.

Ủy quyền yêu cầu

Khi yêu cầu dữ liệu người dùng không công khai, ứng dụng của bạn phải bao gồm mã thông báo uỷ quyền. Mã này cũng giúp Google xác định ứng dụng của bạn.

Giới thiệu về giao thức cấp phép

Bạn nên dùng OAuth 2.0 để cho phép yêu cầu.

API GData của Blogger cũng hỗ trợ các tuỳ chọn uỷ quyền cũ, chẳng hạn như OAuth 1.0, AuthSub hoặc ClientLogin. Tuy nhiên, trong hầu hết các trường hợp, bạn không nên sử dụng các tuỳ chọn khác đó. Nếu ứng dụng đã sử dụng các tuỳ chọn đó, bạn nên chuyển sang OAuth 2.0 nếu có thể.

Nếu ứng dụng có một số yêu cầu uỷ quyền bất thường, chẳng hạn như đăng nhập cùng lúc với việc yêu cầu quyền truy cập dữ liệu (kết hợp) hoặc uỷ quyền trên toàn miền (2LO), thì hiện tại, bạn không thể sử dụng mã thông báo OAuth 2.0. Trong những trường hợp như vậy, bạn phải sử dụng các mã thông báo OAuth 1.0.

Cấp phép cho các yêu cầu bằng OAuth 2.0

Yêu cầu API Blogger GData đối với dữ liệu người dùng không công khai phải được một người dùng đã xác thực cấp phép.

Các chi tiết của quy trình cấp phép hoặc "flow," đối với OAuth 2.0 sẽ khác nhau tuỳ thuộc vào loại ứng dụng bạn đang viết. Quy trình chung sau đây áp dụng cho tất cả các loại ứng dụng:

  1. Khi tạo đơn đăng ký, bạn sẽ đăng ký ứng dụng đó với Google. Sau đó, Google cung cấp thông tin bạn sẽ cần sau này, chẳng hạn như mã ứng dụng khách và khoá bí mật của ứng dụng.
  2. Khi cần quyền truy cập vào dữ liệu người dùng, ứng dụng sẽ yêu cầu Google cung cấp phạm vi truy cập cụ thể.
  3. Google sẽ hiển thị một hộp thoại OAuth cho người dùng để hỏi xem họ có cho phép ứng dụng của bạn yêu cầu một số dữ liệu của họ hay không.
  4. Nếu người dùng đồng ý, thì Google sẽ cấp cho ứng dụng của bạn một mã truy cập ngắn hạn.
  5. Sau đó, ứng dụng yêu cầu dữ liệu người dùng và đính kèm mã truy cập trong yêu cầu.
  6. Nếu xác định rằng yêu cầu của bạn và mã này là hợp lệ, Google sẽ trả về dữ liệu mà ứng dụng yêu cầu.

Một số quy trình cấp phép có các bước bổ sung khác, chẳng hạn như sử dụng mã làm mới để lấy mã truy cập mới. Để biết thông tin chi tiết về quy trình cho các loại ứng dụng khác nhau, hãy xem tài liệu về OAuth 2.0 của Google.

Dưới đây là thông tin về phạm vi truy cập của OAuth 2.0 cho API GData trên Blogger:

https://www.blogger.com/feeds/

Để yêu cầu quyền truy cập bằng OAuth 2.0, ứng dụng của bạn cần thông tin về mức truy cập, cũng như thông tin mà Google cung cấp trong quá trình đăng ký ứng dụng (chẳng hạn như ID ứng dụng khách và/hoặc mật khẩu ứng dụng khách).

Mẹo: Thư viện ứng dụng API Google có thể xử lý một số bước trong quy trình cấp phép cho bạn. Thư viện này được cung cấp bằng nhiều ngôn ngữ lập trình. Hãy xem trang Thư viện và mẫu để biết thêm thông tin chi tiết.

Chỉ định một phiên bản

Mọi yêu cầu mà bạn gửi bằng API Dữ liệu Blogger đều phải chỉ định phiên bản 2 của API.

Để chỉ định số phiên bản, hãy sử dụng tiêu đề HTTP GData-Version:

GData-Version: 2

Ngoài ra, nếu không thể đặt các tiêu đề HTTP, bạn có thể chỉ định v=2 làm tham số truy vấn trong URL. Nhưng bạn nên sử dụng tiêu đề HTTP nếu có thể.

Lưu ý: Các thư viện ứng dụng tự động cung cấp các tiêu đề phiên bản thích hợp, vì vậy, bạn không nên sử dụng tham số truy vấn v=2 khi đang sử dụng thư viện ứng dụng.

Truy xuất danh sách blog

API Dữ liệu của Blogger cung cấp nguồn cấp dữ liệu liệt kê các blog cho một người dùng cụ thể; nguồn cấp dữ liệu đó được gọi là "metafeed;"

Gửi HTTP GET đến URL sau để truy xuất danh sách blog:

https://www.blogger.com/feeds/profileID/blogs

Trong đó, mã hồ sơ là số trong URL cho trang hồ sơ của người dùng.

Lưu ý: Bạn cũng có thể thay thế default cho mã nhận dạng người dùng để yêu cầu Blogger trả về danh sách các blog cho người dùng có thông tin đăng nhập đi kèm với yêu cầu.

Mục nhập trong nguồn cấp dữ liệu có thể có dạng như sau:

<entry gd:etag='W/"D08FQn8-eip7ImA9WxZbFEw."'>
  <id>tag:blogger.com,1999:user-userNumber.blog-blogID</id>
  <published>2006-08-02T18:44:43.089-07:00</published>
  <updated>2008-04-17T00:03:33.152-07:00</updated>
  <title>Lizzy's Diary</title>
  <summary type='html'>Being the journal of Elizabeth Bennet</summary>
  <link rel='self' type='application/atom+xml'
    href='http://www.blogger.com/feeds/profileID/blogs/blogID' />
  <link rel='alternate' type='text/html'
    href='http://blogName.blogspot.com/' />
  <link rel='http://schemas.google.com/g/2005#feed'
    type='application/atom+xml'
    href='http://blogName.blogspot.com/feeds/posts/default' />
  <link rel='http://schemas.google.com/g/2005#post'
    type='application/atom+xml'
    href='http://www.blogger.com/feeds/blogID/posts/default' />
  ...
  <author>
    <name>Elizabeth Bennet</name>
    <uri>http://www.blogger.com/profile/profileID</uri>
    <email>noreply@blogger.com</email>
  </author>
</entry>

Để biết thông tin về ý nghĩa của từng phần tử đó, hãy xem tài liệu Tài liệu tham khảo giao thức API dữ liệu của Google hoặc quy cách Atom 1.0.

Nếu yêu cầu của bạn không thành công vì lý do nào đó, Blogger có thể trả về một mã trạng thái khác. Bạn cũng có thể xem thêm thông tin về mã trạng thái HTTP trong tài liệu Tài liệu tham khảo về giao thức API dữ liệu của Google.

Tạo bài đăng

API Dữ liệu của Blogger cho phép bạn tạo và xuất bản các mục nhập mới trên blog, cũng như việc tạo các mục nhập bản nháp.

Đăng bài trên blog

Sau khi xác thực, bạn có thể xuất bản các mục nhập mới trên blog.

Trước tiên, hãy tạo một phần biểu thị XML của bài đăng để xuất bản. XML này cần phải ở dạng một phần tử <entry> Atom, có thể có dạng như sau:

<entry xmlns='http://www.w3.org/2005/Atom'>
  <title type='text'>Marriage!</title>
  <content type='xhtml'>
    <div xmlns="http://www.w3.org/1999/xhtml">
      <p>Mr. Darcy has <em>proposed marriage</em> to me!</p>
      <p>He is the last man on earth I would ever desire to marry.</p>
      <p>Whatever shall I do?</p>
    </div>
  </content>
  <category scheme="http://www.blogger.com/atom/ns#" term="marriage" />
  <category scheme="http://www.blogger.com/atom/ns#" term="Mr. Darcy" />
</entry>

Lưu ý: Tính năng đặt tác giả tùy chỉnh cho bài đăng hiện không được hỗ trợ. Tất cả bài đăng mới sẽ xuất hiện như thể chúng được tạo bởi người dùng hiện đã xác thực.

Để xuất bản mục này, hãy gửi mục nhập đó tới URL của bài đăng trên blog như sau. Đầu tiên, hãy đặt phần tử Atom <entry> vào phần nội dung của yêu cầu POST mới, sử dụng loại nội dung application/atom+xml. Sau đó, hãy tìm URL của bài đăng trên blog trong nguồn cấp dữ liệu bằng cách tìm phần tử <link> nơi thuộc tính rel kết thúc bằng #post. URL của bài đăng trên blog được cung cấp dưới dạng thuộc tính href của phần tử này, ở định dạng sau:

https://www.blogger.com/feeds/blogID/posts/default

Lưu ý: URL này giống với URL trong thẻ <link rel="service.post"> xuất hiện trong phần <head> của phiên bản blog có thể đọc được.

Blogger tạo một bài đăng trên blog bằng mục bạn đã gửi, sau đó trả về một mã trạng thái HTTP 201 CREATED, cùng với một bản sao của bài đăng mới ở dạng phần tử <entry>. Mục nhập được trả về giống với mục bạn đã gửi, nhưng cũng chứa nhiều phần tử do Blogger thêm vào, chẳng hạn như phần tử <id>.

Nếu yêu cầu của bạn không thành công vì lý do nào đó, Blogger có thể trả về một mã trạng thái khác. Để biết thông tin về mã trạng thái, hãy xem tài liệu tham khảo về giao thức API Dữ liệu của Google.

Tạo bài đăng nháp trên blog

Các bài đăng nháp được tạo giống như các bài đăng công khai, nhưng thêm phần tử <app:control> vào mục nhập cho biết bài đăng chưa được xuất bản.

Phần tử <app:control> này phải chứa một phần tử <app:draft> duy nhất làm phần tử con:

<app:control xmlns:app='http://www.w3.org/2007/app'>
  <app:draft>yes</app:draft>
</app:control>

Dữ liệu có trong phần tử <app:draft> phải là chuỗi yes để bài đăng được nhận dạng là bản nháp.

Bạn có thể chuyển bài đăng nháp hiện có trên blog thành bài đăng đã xuất bản bằng cách truy xuất bài đăng nháp, đặt dữ liệu phần tử <app:draft> thành chuỗi no, sau đó cập nhật bài đăng. Việc truy xuất và cập nhật bài đăng sẽ được đề cập trong 2 phần tiếp theo.

Lưu ý: Để biết thêm thông tin về Giao thức xuất bản của Atom, bao gồm cả vùng chứa tên <app:control><app:draft>, hãy xem RFC 5023.

Đang truy xuất bài đăng

Các phần sau đây mô tả cách truy xuất danh sách các bài đăng trên blog, có và không có tham số truy vấn.

Bạn có thể truy vấn nguồn cấp dữ liệu công khai trên Blogger mà không cần xác thực. Do đó, bạn không cần đặt thông số Uỷ quyền khi truy xuất các bài đăng trên blog từ blog công khai.

Truy xuất tất cả bài đăng trên blog

Để truy xuất bài đăng của người dùng, hãy gửi yêu cầu HTTP GET đến URL của nguồn cấp dữ liệu trong blog. Sau đó, Blogger sẽ trả về một nguồn cấp dữ liệu chứa các mục nhập thích hợp trên blog. Ví dụ: để nhận danh sách các bài đăng trên blog cho liz@gmail.com, hãy gửi yêu cầu HTTP sau đây tới Blogger (tất nhiên với giá trị thích hợp thay cho blogID):

GET https://www.blogger.com/feeds/blogID/posts/default

Sau đó, Blogger sẽ trả về mã trạng thái HTTP 200 OK và nguồn cấp dữ liệu Atom 1.0 tiêu chuẩn chứa các bài đăng trên blog.

Sau đây là ví dụ về nguồn cấp dữ liệu cho một blog chỉ có một bài đăng. Xin lưu ý rằng chúng tôi đã chỉnh sửa chút ít để ví dụ này dễ đọc hơn một chút. Cụ thể, một nguồn cấp dữ liệu Blogger thực sự có chứa mã và URL thực.

<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet href="http://www.blogger.com/styles/atom.css"
  type="text/css"?>
<feed xmlns='http://www.w3.org/2005/Atom'
    xmlns:gd='http://schemas.google.com/g/2005'
    gd:etag='W/"D08FQn8-eip7ImA9WxZbFEw."'>
  <id>tag:blogger.com,1999:blog-blogID</id>
  <updated>2008-04-17T00:03:33.152-07:00</updated>
  <title>Lizzy's Diary</title>
  <subtitle type='html'></subtitle>
  <link rel='http://schemas.google.com/g/2005#feed'
    type='application/atom+xml'
    href='http://blogName.blogspot.com/feeds/posts/default' />
  <link rel='self' type='application/atom+xml'
    href='http://www.blogger.com/feeds/blogID/posts/default' />
  <link rel='alternate' type='text/html'
    href='http://blogName.blogspot.com/' />
  <author>
    <name>Elizabeth Bennet</name>
    <uri>http://www.blogger.com/profile/profileID</uri>
    <email>noreply@blogger.com</email>
  </author>
  <generator version='7.00'
    uri='http://www2.blogger.com'>Blogger</generator>
  <entry gd:etag='W/"D0YHRn84eip7ImA9WxZUFk8."'>
    <id>tag:blogger.com,1999:blog-blogID.post-postID</id>
    <published>2008-04-07T20:25:00.005-07:00</published>
    <updated>2008-04-07T20:25:37.132-07:00</updated>
    <title>Quite disagreeable</title>
    <content type='html'>&lt;p&gt;I met Mr. Bingley's friend Mr. Darcy
      this evening. I found him quite disagreeable.&lt;/p&gt;</content>
    <link rel='edit' type='application/atom+xml'
      href='http://www.blogger.com/feeds/blogID/posts/default/postID' />
    <link rel='self' type='application/atom+xml'
      href='http://www.blogger.com/feeds/blogID/posts/default/postID' />
    <link rel='alternate' type='text/html'
      href='http://blogName.blogspot.com/2008/04/quite-disagreeable.html' />
    <author>
      <name>Elizabeth Bennet</name>
      <uri>http://www.blogger.com/profile/profileID</uri>
      <email>noreply@blogger.com</email>
    </author>
  </entry>
</feed>

Đang truy xuất lại bài đăng trên blog

Nếu muốn truy xuất một bài đăng mà bạn đã truy xuất trước đó, bạn có thể cải thiện hiệu suất bằng cách yêu cầu Blogger chỉ gửi bài đăng nếu bài đăng đó đã thay đổi kể từ lần gần nhất bạn truy xuất bài đăng đó.

Để thực hiện loại truy xuất có điều kiện này, hãy gửi một yêu cầu HTTP GET có tiêu đề HTTP If-None-Match. Trong tiêu đề, hãy chỉ định ETag của mục nhập mà bạn có thể tìm thấy trong thuộc tính gd:etag của phần tử <entry>.

Ví dụ:

If-None-Match: W/"D08FQn8-eil7ImA9WxZbFEw."

Khi nhận được yêu cầu này, Blogger sẽ kiểm tra xem liệu mục nhập mà bạn yêu cầu có cùng ETag như ETag mà bạn đã chỉ định hay không. Nếu ETag phù hợp, thì mục nhập sẽ không thay đổi và Blogger sẽ trả về mã trạng thái Not Modified 304 HTTP.

Nếu ETag không khớp, thì mục đã được sửa đổi kể từ lần gần nhất bạn yêu cầu và Blogger sẽ trả về mục nhập.

Để biết thêm thông tin về ETag, hãy xem Hướng dẫn tham khảo về API Dữ liệu của Google.

Truy xuất bài đăng bằng cách sử dụng tham số truy vấn

API Dữ liệu của Blogger cho phép bạn yêu cầu một tập hợp các mục nhập phù hợp với các tiêu chí đã chỉ định, chẳng hạn như yêu cầu các bài đăng trên blog đã được phát hành hoặc cập nhật trong một phạm vi ngày cụ thể.

Ví dụ: để gửi một truy vấn phạm vi ngày, hãy thêm các tham số published-minpublished-max vào URL yêu cầu. Để nhận tất cả các mục blog được tạo trong khoảng thời gian từ ngày 16 tháng 3 năm 2008 đến ngày 24 tháng 3 năm 2008, hãy gửi một yêu cầu HTTP đến URL của nguồn cấp dữ liệu blog:

GET https://www.blogger.com/feeds/blogID/posts/default?published-min=2008-03-16T00:00:00&published-max=2008-03-24T23:59:59

Khi bạn gửi yêu cầu GET đó, Blogger sẽ trả về mã trạng thái HTTP 200 OK và một nguồn cấp dữ liệu chứa mọi bài đăng trên blog đã được tạo trong phạm vi ngày bạn đã chỉ định.

Bạn cũng có thể dùng các tham số updated-minupdated-max để cập nhật tất cả mục nhập blog trong một phạm vi nhất định. Tuy nhiên, hãy lưu ý rằng các thông số này sẽ bị bỏ qua trừ khi thông số orderby cũng được đặt thành updated.

API Dữ liệu của Blogger hỗ trợ các thông số truy vấn sau:

thay thế
Loại nguồn cấp dữ liệu cần trả về, chẳng hạn như atom (mặc định) hoặc rss.
/category
Chỉ định danh mục (còn gọi là nhãn) để lọc kết quả trong nguồn cấp dữ liệu. Ví dụ: https://www.blogger.com/feeds/blogID/posts/default/-/Fritz/Laurie trả về các mục có cả nhãn FritzLaurie.
kết quả tối đa
Số mục nhập tối đa cần trả về.
sắp xếp
Thứ tự trả về các mục, chẳng hạn như lastmodified (mặc định), starttime hoặc updated.
đã phát hành tối thiểu, đã xuất bản tối đa
Giới hạn ngày xuất bản.
chỉ mục bắt đầu
Chỉ mục dựa trên 1 của kết quả đầu tiên được truy xuất (để phân trang).
cập nhật tối thiểu, cập nhật tối đa
Giới hạn về ngày cập nhật mục nhập. Các tham số truy vấn này bị bỏ qua trừ khi tham số orderby được đặt thành updated.
path
Đường dẫn đường liên kết cố định cho một bài đăng. Ví dụ: Đối với một bài đăng có URL http://finger.blogger.com/2011/08/bloggers-Fresh-new-Look.html, thì đường dẫn cố định là /2011/08/bloggers-fresh-new-look.html.
q
Chuỗi truy vấn toàn bộ văn bản. Điều này cho phép bạn tìm một blog để tìm các bài đăng khớp với một cụm từ tìm kiếm.

Để biết thêm thông tin về các tham số truy vấn, hãy xem Hướng dẫn tham khảo API dữ liệu của BloggerHướng dẫn tham khảo API dữ liệu của Google.

Đang cập nhật bài đăng

Để cập nhật bài đăng hiện có trên blog, trước tiên, bạn truy xuất mục nhập mà bạn muốn cập nhật, sau đó sửa đổi bài đăng đó rồi gửi yêu cầu PUT với mục nhập đã cập nhật trong nội dung bài viết đến URL chỉnh sửa của bài đăng đó. Hãy đảm bảo rằng giá trị <id> trong mục mà bạn PUT khớp chính xác với <id> của mục nhập hiện có.

URL chỉnh sửa được làm nổi bật trong mục sau:

<entry gd:etag='W/"CUYDSXo8fSp7ImA9WB9UFkU."'>
  <id>tag:blogger.com,1999:blog-blogID.post-postID</id>
  <published>2006-11-08T18:10:00.000-08:00</published>
  <updated>2006-11-08T18:10:14.954-08:00</updated>
  <title type='text'>Quite disagreeable</title>
  <content type='html'>&lt;p&gt;I met Mr. Bingley's friend Mr. Darcy
    this evening. I found him quite disagreeable.&lt;/p&gt;</content>
  <link rel='alternate' type='text/html'
    href='http://blogName.blogspot.com/2006/11/quite-disagreeable.html'>
  </link>
  <link rel='self' type='application/atom+xml'
    href='http://blogName.blogspot.com/feeds/posts/default/postID'>
  </link>
  <link rel='edit' type='application/atom+xml'
    href='http://www.blogger.com/feeds/blogID/posts/default/postID'>
  </link>
  <category scheme="http://www.blogger.com/atom/ns#" term="Mr. Bingley" />
  <category scheme="http://www.blogger.com/atom/ns#" term="Mr. Darcy" />
  <author>
    <name>Elizabeth Bennet</name>
    <email>noreply@blogger.com</email>
    <uri>http://www.blogger.com/profile/profileID</uri>
  </author>
</entry>

LƯU Ý QUAN TRỌNG:: Để đảm bảo khả năng tương thích chuyển tiếp, hãy đảm bảo rằng khi bạn PUT nhập một mục cập nhật, bạn sẽ giữ nguyên tất cả XML hiện diện khi bạn truy xuất mục đó từ Blogger. Nếu không, khi chúng tôi triển khai nội dung mới và đưa các phần tử <new-awesome-feature> vào nguồn cấp dữ liệu, ứng dụng của bạn sẽ không trả về các phần tử đó và người dùng của bạn sẽ bỏ lỡ. Tất cả thư viện ứng dụng API của Google Data đều xử lý đúng cách, vì vậy nếu bạn đang sử dụng một trong những thư viện mà bạn chưa thiết lập.

Lưu ý: Tính năng sửa đổi dữ liệu tác giả liên kết với các bài đăng hiện không được hỗ trợ.

Mẹo khắc phục sự cố: Một số tường lửa chặn thông báo HTTP PUT. Để giải quyết vấn đề này, bạn có thể đưa tiêu đề X-HTTP-Method-Override: PUT vào yêu cầu POST. Để biết thông tin chi tiết, hãy xem tài liệu Thông tin cơ bản về giao thức API Dữ liệu của Google.

Đang xóa bài đăng

Để xóa một bài đăng, hãy gửi yêu cầu DELETE đến URL chỉnh sửa của bài đăng đó. Đây cũng là URL dùng để cập nhật bài đăng.

Mẹo khắc phục sự cố: Một số tường lửa chặn thông báo HTTP DELETE. Để khắc phục điều này, bạn có thể đưa tiêu đề X-HTTP-Method-Override: DELETE vào yêu cầu POST. Để biết thông tin chi tiết, hãy xem tài liệu Thông tin cơ bản về giao thức API Dữ liệu của Google.

Bình luận

API Dữ liệu của Blogger cho phép tạo, truy xuất và xóa bình luận. Tính năng cập nhật nhận xét không được hỗ trợ (cũng không có trong giao diện web).

Tạo nhận xét

Để đăng nhận xét, hãy tạo phần tử <entry> Atom như sau:

  <entry xmlns='http://www.w3.org/2005/Atom'>
    <title type="text">This is my first comment</title>
    <content type="html">This is my first comment</content>
  </entry>

Để đăng bình luận này, hãy đặt phần tử Atom <entry> vào phần nội dung của yêu cầu POST mới, sử dụng loại nội dung application/atom+xml. Sau đó, gửi yêu cầu POST đến URL phù hợp trên Blogger:

POST https://www.blogger.com/feeds/blogID/postID/comments/default

Lưu ý: Hiện tại, bạn chỉ có thể đăng bình luận lên blog mà người dùng đã xác thực sở hữu.

Lưu ý: Chúng tôi hiện không hỗ trợ việc cài đặt tác giả tùy chỉnh cho nhận xét. Tất cả nhận xét mới sẽ xuất hiện như thể chúng được tạo bởi người dùng hiện đã xác thực.

Truy xuất nhận xét

Bạn có thể truy xuất các nhận xét đối với một bài đăng cụ thể bằng cách gửi GET đến URL của nguồn cấp dữ liệu về nhận xét cho bài đăng này:

GET https://www.blogger.com/feeds/blogID/postID/comments/default

Hoặc bạn có thể nhận bình luận từ tất cả bài đăng bằng cách sử dụng URL nguồn cấp dữ liệu bình luận trên blog:

GET https://www.blogger.com/feeds/blogID/comments/default

Các yêu cầu này trả về một nguồn cấp dữ liệu bình luận giống như sau:

<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet href="http://www.blogger.com/styles/atom.css"
  type="text/css"?>
<feed xmlns='http://www.w3.org/2005/Atom'
    xmlns:openSearch='http://a9.com/-/spec/opensearch/1.1/'
    xmlns:gd='http://schemas.google.com/g/2005'
    gd:etag='W/"CUYMQ348fyp7ImA9WB9UFkU."'>
  <id>tag:blogger.com,1999:blog-blogID.postpostID..comments</id>
  <updated>2007-12-14T17:46:22.077-08:00</updated>
  <title>Comments on Lizzy's Diary: Quite disagreeable</title>
  <link rel='http://schemas.google.com/g/2005#feed'
    type='application/atom+xml'
    href='http://blogName.blogspot.com/feeds/postID/comments/default' />
  <link rel='self' type='application/atom+xml'
    href='http://www.blogger.com/feeds/blogID/postID/comments/default' />
  <link rel='alternate' type='text/html'
    href='http://blogName.blogspot.com/2007/12/quite-disagreeable_5283.html' />
  <author>
    <name>Elizabeth Bennet</name>
    <uri>http://www.blogger.com/profile/profileID</uri>
    <email>noreply@blogger.com</email>
  </author>
  <generator version='7.00'
    uri='http://www.blogger.com'>Blogger</generator>
  <openSearch:totalResults>1</openSearch:totalResults>
  <openSearch:startIndex>1</openSearch:startIndex>
  <entry gd:etag='W/"CUYCQX47eSp7ImA9WB9UFkU."'>
    <id>tag:blogger.com,1999:blog-blogID.post-commentID</id>
    <published>2007-12-14T17:46:00.001-08:00</published>
    <updated>2007-12-14T17:46:00.001-08:00</updated>
    <title>Darcy FTW!</title>
    <content type='html'>Darcy FTW!</content>
    <link rel='edit' type='application/atom+xml'
      href='http://www.blogger.com/feeds/blogID/postID/comments/default/commentID' />
    <link rel='self' type='application/atom+xml'
      href='http://www.blogger.com/feeds/blogID/postID/comments/default/commentID' />
    <link rel='alternate' type='text/html'
      href='http://blogName.blogspot.com/2007/12/quite-disagreeable_5283.html?showComment=1197683160001#ccommentID'
      title='' />
    <author>
      <name>Elizabeth Bennet</name>
      <uri>http://www.blogger.com/profile/profileID</uri>
      <email>liz@gmail.com</email>
    </author>
    <thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0'
      href='http://blogName.blogspot.com/2007/12/quite-disagreeable_5283.html'
      ref='tag:blogger.com,1999:blog-blogID.post-postID'
      source='http://www.blogger.com/feeds/blogID/posts/default/postID'
      type='text/html' />
  </entry>
</feed>

Đang xoá nhận xét

Để xóa một nhận xét, hãy gửi yêu cầu DELETE đến URL chỉnh sửa của nhận xét đó. URL này được làm nổi bật trong nguồn cấp dữ liệu bình luận ở trên.

Định dạng xuất

Blogger cho phép người dùng xuất và nhập blog của họ bằng cách sử dụng tệp xuất trên Blogger. Tệp xuất này chứa tất cả bài đăng và nhận xét cho một blog. Định dạng của tệp xuất có định dạng giống hệt Atom được mô tả trong các phần về cách truy xuất bài đăng và nhận xét. Tệp xuất này sẽ chứa nội dung của nguồn cấp dữ liệu bài đăng và nội dung của nguồn cấp dữ liệu nhận xét được kết hợp thành một tài liệu.

Để xuất hoặc nhập dữ liệu blog bằng định dạng xuất, bạn có thể truy cập vào trang Cài đặt cho blog. Để truy xuất tệp xuất cho blog bằng Data API, hãy sử dụng URL sau:

GET https://www.blogger.com/feeds/blogID/archive

Để nhập tệp xuất, hãy tạo yêu cầu POST đến URL sau đây có nội dung của tệp xuất làm dữ liệu yêu cầu và application/atom+xml làm loại nội dung:

POST https://www.blogger.com/feeds/blogID/archive/full

Không có URL nào cho các tham số truy vấn hỗ trợ ở trên. Cả hai yêu cầu cũng phải chứa thông tin xác thực và chỉ có quản trị viên blog mới có thể nhập/xuất blog bằng cách sử dụng các URL nguồn cấp dữ liệu này.

Lưu ý: Nếu bạn đang tạo tệp xuất riêng của mình trên Blogger, hiện có một quy định hạn chế về thứ tự của các bài đăng và bình luận. Tệp xuất bằng Blogger sẽ liệt kê tất cả bài đăng trước tiên, sau đó là tất cả nhận xét. Được phép xen kẽ các bài đăng và bài đăng bình luận miễn là mục bình luận xuất hiện sau bài đăng.

Để biết thêm thông tin về cách Blogger sử dụng định dạng Atom trong tệp xuất, hãy xem Hướng dẫn tham khảo về giao thức.

Quay lại đầu trang