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

Lưu ý quan trọng: Chúng tôi sẽ ngừng hỗ trợ Google Data API phiên bản 2.0 từ ngày 30 tháng 9 năm 2024. Để đảm bảo ứng dụng của bạn vẫn hoạt động bình thường, hãy cập nhật những ứng dụng có dùng API Google Data phiên bản 2.0 lên phiên bản API mới nhất. Đối với phiên bản mới nhất, hãy sử dụng các đường liên kết trong thanh điều hướng bên trái. Lưu ý: mặc dù một số yêu cầu GET (chẳng hạn như bài đăng trang thông tin) sẽ tiếp tục được hỗ trợ dưới dạng URL nguồn cấp dữ liệu, nhưng hành vi của các yêu cầu này có một số điểm khác biệt nhỏ. Để biết thông tin chi tiết, hãy tham khảo tài liệu Trợ giúp của Blogger.

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

Ứng dụng khách của bạn có thể sử dụng API Dữ liệu Blogger để tạo bài đăng trên blog mới, chỉnh sửa hoặc xoá bài đăng trên blog hiện có và truy vấn các bài đăng trên blog khớ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ề các chức 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 hoạt động tương tác cơ bản với API Dữ liệu bằng cách sử dụng XML thô và HTTPS. Sau khi đọc tài liệu này, bạn nên 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 ứng dụng 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 ý tưởng chung đằng sau giao thức API Dữ liệu của Google.

Nếu đ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 cần 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 các trang hướng dẫn về các tiện ích đó.

Để biết thông tin tham khảo về Blogger Data API, hãy xem Hướng dẫn tham khảo về giao thức.

Bắt đầu

Tạo tài khoản Blogger

Bạn nên đăng ký một tài khoản Blogger để thử nghiệm. Blogger sử dụng Tài khoản Google, vì vậy, 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ã 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 sử dụng OAuth 2.0 để cấp phép các 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 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 của bạn đã sử dụng các tuỳ chọn đó, bạn nên di chuyển sang OAuth 2.0 nếu có thể.

Nếu ứng dụng của bạn 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 yêu cầu quyền truy cập dữ liệu (kết hợp) hoặc uỷ quyền toàn miền (2LO), thì bạn hiệ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 mã thông báo OAuth 1.0.

Uỷ quyền cho các yêu cầu bằng OAuth 2.0

Yêu cầu đối với API GData của Blogger về 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 uỷ quyền (hay còn gọi là "luồng") cho OAuth 2.0 sẽ khác nhau đôi chút 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 ứng dụng, 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à mật khẩu ứng dụng khách.
  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 một phạm vi truy cập cụ thể.
  3. Google hiển thị hộp thoại OAuth cho người dùng để yêu cầu họ cho phép ứng dụng của bạn yêu cầu một số dữ liệu của họ.
  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. Ứng dụng của bạn yêu cầu dữ liệu người dùng và đính kèm mã truy cập vào 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 của 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ề phạm vi, 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ư mã ứng dụng khách và/hoặc khoá bí mật của ứng dụng).

Mẹo: Thư viện ứng dụng API Google có thể xử lý một số bước trong quy trình uỷ quyền 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 chi tiết.

Chỉ định 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 tiêu đề HTTP, bạn có thể chỉ định v=2 làm tham số truy vấn trong URL. Tuy nhiên, bạn nên sử dụng tiêu đề HTTP khi có thể.

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

Truy xuất danh sách blog

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

Gửi GET HTTP đế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 của 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. Thao tác này sẽ yêu cầu Blogger trả về danh sách blog cho người dùng có thông tin xác thực đi kèm với yêu cầu.

Một mục trong nguồn cấp dữ liệu siêu 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 về 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

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

Xuất bản bài đăng trên blog

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

Trước tiên, hãy tạo một tệp XML đại diện cho bài đăng cần xuất bản. Tệp XML này cần ở dạng phần tử <entry> của 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 ý: Chúng tôi hiện chưa hỗ trợ tính năng đặt tác giả tuỳ chỉnh cho bài đăng. Tất cả bài đăng mới sẽ xuất hiện như thể chúng do người dùng hiện đã xác thực tạo.

Để xuất bản mục nhập này, hãy gửi mục nhập đó đến URL bài đăng của blog như sau. Trước tiên, hãy đặt phần tử <entry> của Atom 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 bài đăng của blog trong nguồn cấp dữ liệu siêu dữ liệu bằng cách xác định phần tử <link>, trong đó thuộc tính rel kết thúc bằng #post. URL bài đăng của blog được cung cấp dưới dạng thuộc tính href của phần tử này, có định dạng như 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 nhập mà bạn đã gửi, sau đó trả về 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 nhập bạn đã gửi, nhưng mục nhập này 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

Bài đăng nháp được tạo giống như bài đăng công khai, nhưng có thêm phần tử <app:control> vào mục nhập cho biết rằng 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 chứa 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 một 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 của 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 hai phần tiếp theo.

Lưu ý: Để biết thêm thông tin về Giao thức phát hành Atom, bao gồm cả không gian tên <app:control><app:draft>, hãy xem RFC 5023.

Truy xuất bài đăng

Các phần sau đây mô tả cách truy xuất danh sách 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 của 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 bài đăng trên blog từ mộ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 GET HTTP đến URL nguồn cấp dữ liệu của blog. Sau đó, Blogger sẽ trả về một nguồn cấp dữ liệu chứa các mục nhập blog thích hợp. Ví dụ: để nhận danh sách bài đăng trên blog của liz@gmail.com, hãy gửi yêu cầu HTTP sau đây đến 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à một 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 một chút ví dụ này để dễ đọc hơn. Cụ thể, nguồn cấp dữ liệu thực trên Blogger chứa mã nhận dạng và URL thực tế.

<?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>

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 quả 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 truy xuất gần đây nhất.

Để 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 GET HTTP có chứa tiêu đề If-None-Match HTTP. 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 mục bạn yêu cầu có cùng ETag với ETag bạn chỉ định hay không. Nếu ETag khớp, thì mục nhập đó chưa thay đổi và Blogger sẽ trả về mã trạng thái HTTP 304 Not Modified.

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 đó.

Để 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 tham số truy vấn

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

Ví dụ: để gửi truy vấn theo 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 nhập blog được tạo 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 nguồn cấp dữ liệu của 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ột 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 mà bạn chỉ định.

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

Blogger Data API hỗ trợ các tham số truy vấn sau:

alt
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ả của 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.
max-results
Số mục nhập tối đa cần trả về.
orderby
Thứ tự trả về các mục nhập, chẳng hạn như lastmodified (mặc định), starttime hoặc updated.
published-min, published-max
Giới hạn về ngày xuất bản mục nhập.
start-index
Chỉ mục dựa trên 1 của kết quả đầu tiên cần truy xuất (để phân trang).
updated-min, updated-max
Giới hạn về ngày cập nhật mục nhập. Các tham số truy vấn này sẽ bị bỏ qua trừ khi tham số orderby được đặt thành updated.
đường dẫn
Đường dẫn liên kết cố định của một bài đăng. Ví dụ: đối với một bài đăng có URL http://buzz.blogger.com/2011/08/bloggers-fresh-new-look.html, đường dẫn liên kết cố định là /2011/08/bloggers-fresh-new-look.html.
q
Chuỗi truy vấn toàn văn. Tính năng này cho phép bạn tìm kiếm các bài đăng trên blog 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.

Cập nhật bài đăng

Để cập nhật một bài đăng trên blog hiện có, trước tiên, bạn truy xuất mục bạn muốn cập nhật, sau đó sửa đổi mục đó, rồi gửi yêu cầu PUT, với mục đã cập nhật trong nội dung thư, đến URL chỉnh sửa của bài đăng. Hãy đảm bảo rằng giá trị <id> trong mục nhập 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 nhập 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 PUT một mục đã cập nhật, bạn sẽ giữ lại tất cả XML có sẵn khi truy xuất mục đó từ Blogger. Nếu không, khi chúng ta 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 sẽ bỏ lỡ. Tất cả thư viện ứng dụng API Dữ liệu của Google đều xử lý vấn đề này một cách chính xác, vì vậy, nếu đang sử dụng một trong các thư viện này, bạn đã sẵn sàng.

Lưu ý: Hiện tại, chúng tôi không hỗ trợ việc sửa đổi dữ liệu tác giả liên kết với 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 PUT. Để giải quyết vấn đề này, bạn có thể thêm 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 Kiến thức cơ bản về giao thức API Dữ liệu của Google.

Xoá bài đăng

Để xoá 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. Để giải quyết vấn đề này, bạn có thể thêm 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 Kiến thức cơ bản về giao thức API Dữ liệu của Google.

Bình luận

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

Tạo nhận xét

Để đăng bình luận, hãy tạo một 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>

Để xuất bản nhận xét này, hãy đặt phần tử <entry> của Atom 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 gửi yêu cầu POST đến URL Blogger thích hợp:

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 một blog do người dùng đã xác thực sở hữu.

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

Truy xuất bình luận

Bạn có thể truy xuất các bình luận cho 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 bình luận của bài đăng này:

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

Hoặc bạn có thể lấy 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 của 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 có dạ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>

Xoá bình luận

Để xoá một bình luận, hãy gửi yêu cầu DELETE đến URL chỉnh sửa của bình luận đó. 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 bằng tệp xuất của Blogger. Tệp xuất này chứa tất cả bài đăng và bình luận của một blog. Định dạng của tệp xuất là định dạng Atom giống hệt như định dạng được mô tả trong các phần về việc truy xuất bài đăng và bình luận. 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 bình luận đượ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 của blog. Để truy xuất tệp xuất cho một 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 một yêu cầu POST đến URL sau đây với 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

Cả hai URL ở trên đều không hỗ trợ tham số truy vấn. Cả hai yêu cầu cũng phải chứa thông tin xác thực và chỉ quản trị viên blog mới có thể nhập/xuất blog bằ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 của riêng mình trên Blogger, thì hiện có một hạn chế về thứ tự của các mục nhập bài đăng và nhận xét. Tệp xuất trên Blogger sẽ liệt kê tất cả bài đăng trước, sau đó là tất cả bình luận. Bạn được phép xen kẽ các mục đăng và bình luận miễn là mục bình luận nằm sau mục đăng mà bình luận đó dành cho.

Để 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.

Trở lại đầu trang