המדריך למפתחים: פרוטוקול

חשוב: זאת גרסה ישנה של הדף. לגרסה העדכנית ביותר, יש להשתמש בקישורים בסרגל הניווט הימני.

ממשק ה-API של Blogger Data מאפשר לאפליקציות לקוח להציג ולעדכן תוכן של Blogger בצורת פידים של Google Data API.

בעזרת אפליקציית הלקוח שלכם ב-Blogger Data API תוכלו ליצור פוסטים חדשים בבלוג, לערוך או למחוק פוסטים בבלוגים קיימים ולהגיש שאילתות על פוסטים בבלוג שתואמים לקריטריונים מסוימים.

בנוסף לציון הרקע של היכולות של Blogger Data API, מסמך זה מספק דוגמאות לאינטראקציות בסיסיות ב-Data API באמצעות XML ו-HTTP גולמיים. אחרי קריאת המסמך הזה, תוכלו לקרוא מידע נוסף על האינטראקציה עם ה-API באמצעות ספריות הלקוח שלנו. לשם כך, קראו את הקטעים הספציפיים לשפת תכנות במדריך הזה.

תוכן עניינים

Audience

המסמך הזה מיועד למתכנתים שרוצים לכתוב אפליקציות לקוח שיכולות ליצור אינטראקציה עם Blogger באמצעות XML ו-HTTP.

ההנחה היא שהבנת את הרעיונות הכלליים שמאחורי פרוטוקול Google Data APIs.

אם אתם משתמשים במערכת UNIX ואתם רוצים לנסות את הדוגמאות במסמך הזה בלי לכתוב קוד, תוכלו להיעזר בכלי שורת הפקודה של UNIX curl או בכלי wget. למידע נוסף, תוכלו לעיין בדפים הידניים.

במדריך העזר לפרוטוקולים ניתן למצוא מידע על קובצי עזר ב-Blogger Data API.

איך מתחילים

יצירת חשבון Blogger

ייתכן שתרצו להירשם לחשבון Blogger למטרות בדיקה. Blogger משתמש בחשבונות Google, כך שאם כבר יש לכם חשבון Google, אתם מוכנים.

מתבצע אימות לשירות Blogger

ניתן לגשת גם לפיד ציבורי וגם לפיד פרטי באמצעות Blogger Data API. אין צורך באימות כלשהו עבור פידים ציבוריים, אבל הם לקריאה בלבד. אם אתם רוצים לשנות בלוגים, הלקוח שלכם צריך לבצע אימות לפני שיבקש פידים פרטיים. ניתן לבצע אימות באחת משתי גישות: אימות שרת proxy של AuthSub או אימות של שם משתמש/סיסמה ב-ClientLogin.

למידע נוסף על אימות באמצעות ממשקי API של נתוני Google באופן כללי, ניתן לעיין במסמכי התיעוד.

רוב הדוגמאות בסעיפים הבאים של מסמך זה מניחות שאתה מבצע את האימות המתאים.

אימות שרת proxy של AuthSub

אימות שרת proxy של AuthSub משמש את אפליקציות האינטרנט שצריכים לאמת את המשתמשים שלהן לחשבונות Google. למפעיל האתר ולקוד הלקוח אין גישה לשם המשתמש ולסיסמה של משתמש Blogger, אלא הלקוח מקבל אסימוני AuthSub מיוחדים שמאפשרים ללקוח לפעול בשם המשתמש. למידע מפורט יותר, ניתן לעיין בתיעוד של OAuthSub.

כשמשתמש מבקר באפליקציה שלכם לראשונה, הוא עדיין לא אומת. במקרה כזה, תצטרכו להציג חלק מהמידע וקישור שמפנה את המשתמש לדף Google כדי לאמת את הבקשה שלכם לגישה לבלוגים שלו.

הפרמטרים של השאילתה הבאים כלולים בכתובת האתר AuthSubRequest:

הבא
כתובת ה-URL של הדף ש-Google צריכה להפנות אליו את המשתמש לאחר האימות.
היקף
מראה שהאפליקציה מבקשת אסימון כדי לגשת לפידים של Blogger. מחרוזת ההיקף שצריך להשתמש בה היא http://www.blogger.com/feeds/ (כמובן שכתובת ה-URL מקודדת).
מאובטח
מראה אם הלקוח מבקש אסימון מאובטח.
סשן
מציין אם ניתן להחליף את האסימון שהוחזר באסימון לשימוש חוזר (ביקור).

כתובת ה-URL של AuthSubRequest עשויה להיראות כך:

https://www.google.com/accounts/AuthSubRequest?scope=http%3A%2F%2Fwww.blogger.com%2Ffeeds%2F&session=1&secure=0&next=http%3A%2F%2Fwww.example.com%2Fwelcome.html

המשתמש לוחץ על הקישור לאתר של Google ומאמת את חשבון Google שלו.

אחרי שהמשתמש מאמת, מערכת AuthSub מפנה אותם לכתובת ה-URL שציינתם בפרמטר השאילתה next של כתובת ה-URL של AuthSubRequest. מערכת AuthSub מצרפת אסימון אימות לכתובת ה-URL הזו כערך של פרמטר השאילתה token. למשל:

http://www.example.com/welcome.html?token=yourAuthToken

ערך האסימון הזה מייצג אסימון AuthSub לשימוש חד-פעמי. בדוגמה הזו, מכיוון ש-session=1 צוין, ניתן להחליף את האסימון הזה עבור אסימון פעילות ב-AuthSub באמצעות קריאה לשירות AuthSubSessionToken עם אסימון לשימוש חד-פעמי בכותרת 'הרשאה', באופן הבא:

GET /accounts/AuthSubSessionToken HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: AuthSub token="yourAuthToken"
User-Agent: Java/1.5.0_06
Host: www.google.com
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive

התשובה של שירות AuthSubSessionToken כוללת כותרת Token שמכילה את אסימון הסשן וכותרת Expiration שמציינת את משך הזמן שבו האסימון יישאר בתוקף.

לאחר מכן, האפליקציה שלכם תוכל להשתמש בערך של אסימון הסשן בכותרת Authorization של האינטראקציות הבאות עם Blogger.

הנה דוגמה לבקשת HTTP, שכוללת אסימון לא מאובטח, שאתם יכולים לשלוח ל-Blogger:

GET /feeds/blogID/blogs/posts/defaults HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: AuthSub token="yourSessionToken"
User-Agent: Java/1.5.0_06
Host: www.blogger.com
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive

אימות שם משתמש/סיסמה של ClientLogin

השתמש באימות ClientLogin אם הלקוח שלך הוא לקוח עצמאי ויחיד עבור משתמש יחיד (כגון אפליקציה למחשב). כדי לבקש אסימון אימות באמצעות מנגנון ClientLogin, שלח בקשה POST לכתובת האתר הבאה:

https://www.google.com/accounts/ClientLogin

הגוף POST צריך לכלול קבוצת פרמטרים של שאילתה שנראים כמו פרמטרים שהועברו על ידי טופס HTML, באמצעות סוג התוכן application/x-www-form-urlencoded. הפרמטרים האלה הם:

אימייל
כתובת האימייל של המשתמש.
העברה
הסיסמה של המשתמש.
שירות
שם השירות של Blogger הוא blogger. (כדי לראות שמות של שירותים אחרים, יש לעיין ברשימת שמות השירותים).
סוג חשבון
יש להגדיר זאת תמיד כ-GOOGLE כשמשתמשים ב-Blogger API. אם לא יוגדר פרמטר כזה, משתמשים שלא יש להם חשבון G Suite לא יוכלו לגשת אליו.
source
מזהה את אפליקציית הלקוח שלכם. צריך להשתמש בטופס companyName-applicationName-versionID. הדוגמאות מתבססות על השם exampleCo-exampleApp-1.

למידע נוסף על הפרמטרים, עיינו במסמך אימות עבור אפליקציות מותקנות.

אם בקשת האימות תיכשל, השרת יחזיר קוד סטטוס 403 Forbidden של HTTP.

אם התגובה לבקשה מוצלחת, השרת יחזיר קוד מצב 200 OK של HTTP, בתוספת שלושה קודים אלפאנומריים ארוכים בגוף התגובה: SID, LSID ו-Auth. ערך האימות הוא אסימון ההרשאה שאתם שולחים ל-Blogger עם כל אחת מהבקשות הבאות שלכם, לכן כדאי לשמור עותק של הערך. אפשר להתעלם מהערכים של SID ו-LSID.

מכיוון שכל הבקשות לפידים פרטיים מחייבות אימות, תצטרכו להגדיר את כותרת ההרשאה בכל האינטראקציות הבאות עם Blogger באמצעות הפורמט הבא:

Authorization: GoogleLogin auth=yourAuthToken

כאשר yourAuthToken הוא מחרוזת האימות שהוחזרה על ידי בקשת ClientLogin.

למידע נוסף על אימות ClientLogin, כולל בקשות ותגובות לדוגמה, ניתן לעיין בתיעוד של אימות עבור יישומים מותקנים.

הערה: יש להשתמש באותו אסימון לכל הבקשות בסשן נתון; אין לרכוש אסימון חדש לכל בקשה ב-Blogger.

הערה: כפי שמתואר בתיעוד של ClientLogin, ייתכן שבקשת האימות תיכשל ותישלח בקשה לאימות CAPTCHA. אם אתם רוצים ש-Google תריץ את אתגר ה-CAPTCHA ומטפלת בו, שלחו את המשתמש אל https://www.google.com/accounts/DisplayUnlockCaptcha?service=blogger (ולא אל כתובת ה-URL לטיפול ב-CAPTCHA שצוינה במסמכי התיעוד של ClientLogin).

מתבצע אחזור של רשימת בלוגים

ממשק ה-API של Blogger Data מספק עדכון שמפרט את הבלוגים של משתמש מסוים; העדכון הזה נקרא "metafeed."

שולחים HTTP GET לכתובת ה-URL הבאה כדי לאחזר את רשימת הבלוגים:

http://www.blogger.com/feeds/userID/blogs

הערה: תוכלו גם להחליף את default עבור מזהה המשתמש, המורה ל-Blogger להחזיר את רשימת הבלוגים עבור המשתמש שפרטי הכניסה שלו מלווים את הבקשה.

רשומה במטא-פיד עשויה להיראות כך:

<entry>
  <id>tag:blogger.com,1999:blog-blogID.post-postID</id>
  <published>2006-08-02T18:44:43.089-07:00</published>
  <updated>2006-11-08T18:10:23.020-08:00</updated>
  <title type='text'>Lizzy's Diary</title>
  <summary type='html'>Being the journal of Elizabeth Bennet</summary>
  <link rel='alternate' type='text/html'
    href='http://blogName.blogspot.com/'>
  </link>
  <link rel='http://schemas.google.com/g/2005#feed'
    type='application/atom+xml'
    href='http://blogName.blogspot.com/feeds/posts/default'>
  </link>
  <link rel='http://schemas.google.com/g/2005#post'
    type='application/atom+xml'
    href='http://www.blogger.com/feeds/blogID/posts/default'>
  </link>
  <link rel='self' type='application/atom+xml'
    href='http://www.blogger.com/feeds/userID/blogs/blogID'>
  </link>
  <link rel='edit' type='application/atom+xml'
      href='http://www.blogger.com/feeds/userID/blogs/blogID'>
  </link>
  <author>
    <name>Elizabeth Bennet</name>
    <email>noreply@blogger.com</email>
    <uri>http://www.blogger.com/profile/profileID</uri>
  </author>
</entry>

למידע על המשמעות של כל אחד מהרכיבים האלו, ניתן לעיין במסמך של Google APIs Data Protocol Protocol או במפרט של Atom 1.0.

אם הבקשה נכשלה מסיבה כלשהי, Blogger עשוי להחזיר קוד סטטוס שונה. מידע נוסף על קודי סטטוס של HTTP זמין גם במסמך הסבר על הפרוטוקולים ב-API של Google Data.

יצירת פוסטים

ה-Blogger Data API מאפשר ליצור ולפרסם רשומות חדשות בבלוג, וגם ליצור טיוטות של רשומות.

פרסום פוסט בבלוג

לאחר האימות, תוכלו לפרסם רשומות חדשות בבלוג.

קודם כל, יוצרים ייצוג XML של הפוסט שרוצים לפרסם. ה-XML הזה צריך להיות בצורת רכיב Atom <entry>, שעשוי להיראות כך:

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

הערה: כרגע אין תמיכה בהגדרת מחבר מותאם אישית לפוסטים. כל הפוסטים החדשים יופיעו כאילו נוצרו על ידי המשתמש שאומת כרגע.

כדי לפרסם את הערך הזה, יש לשלוח אותו לכתובת ה-URL של הפוסט בבלוג כך: קודם צריך למקם את הרכיב Atom <entry> בגוף הבקשה החדשה POST, באמצעות סוג התוכן application/atom+xml. לאחר מכן יש לאתר את כתובת ה-URL של הפוסט בבלוג בבלוג על ידי איתור הרכיב <link> שבו מאפיין rel מסתיים ב-#post. כתובת ה-URL של הפוסט בבלוג ניתנת כמאפיין href של הרכיב הזה, בפורמט הבא:

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

הערה: כתובת ה-URL זהה לכתובת ה-URL בתג <link rel="service.post"> שמופיע בקטע <head> של גרסת הבלוג שניתנת לקריאה על ידי משתמשים.

Blogger יוצר פוסט בבלוג באמצעות הערך ששלחת, ולאחר מכן מחזיר קוד סטטוס HTTP201 CREATED, יחד עם עותק של הפוסט החדש בפורמט של רכיב <entry>. הרשומה שהוחזרה היא אותה רשומה ששלחתם, אבל היא מכילה גם רכיבים שונים שנוספו על ידי Blogger, כמו רכיב <id>.

אם הבקשה נכשלה מסיבה כלשהי, Blogger עשוי להחזיר קוד סטטוס שונה. מידע על קודי הסטטוס זמין במסמך העזר בנושא פרוטוקול Google Data API.

יצירת טיוטה של פוסט בבלוג

טיוטות של פוסטים נוצרות באותו אופן כמו פוסטים ציבוריים, אבל עם רכיב <app:control> נוסף ברשומה שמציינת שצריך לפרסם את הפוסט (עדיין)

אלמנט <app:control> הזה צריך לכלול אלמנט אחד מסוג <app:draft> כצאצא:

<app:control xmlns:app='http://purl.org/atom/app#'>
  <app:draft>yes</app:draft>
</app:control>

כדי שהמערכת תוכל לזהות את הפוסט כטיוטה, הנתונים שכלולים ברכיב <app:draft> צריכים להיות המחרוזת yes.

אפשר להפוך טיוטה קיימת של פוסט בבלוג לפוסט שפורסם על ידי אחזור הפוסט של הטיוטה, הגדרת הנתונים של רכיב <app:draft> למחרוזת no ולאחר מכן עדכון הפוסט. האחזור והעדכון של הפוסטים מפורטים בשני הקטעים הבאים.

הערה: מידע נוסף על ה-Atom Publishing Protocol, כולל מרחבי השמות <app:control> ו-<app:draft>, זמין במאמר RFC 5023.

המערכת מאחזרת פוסטים

בקטעים הבאים מתואר איך לאחזר רשימה של פוסטים בבלוג עם או בלי פרמטרים של שאילתה.

אתם יכולים ליצור שאילתה בפיד גלוי לכול של Blogger ללא אימות. לכן אין צורך להגדיר את פרמטר ההרשאה באחזור פוסטים בבלוג מבלוג ציבורי.

מתבצע אחזור של כל הפוסטים בבלוג

כדי לאחזר את הפוסטים של המשתמש, שלח בקשת HTTP GET לכתובת ה-URL של הפיד של הבלוג. לאחר מכן Blogger מחזיר פיד שמכיל את רשומות הבלוג המתאימות. לדוגמה, כדי לקבל רשימה של פרסומי בלוגים עבור liz@gmail.com, שולחים את בקשת ה-HTTP הבאה ל-Blogger (עם הערך המתאים במקום blogID, כמובן):

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

לאחר מכן, Blogger מחזיר קוד סטטוס HTTP 200 OK והפיד הרגיל Atom 1.0 שמכיל את הפוסטים בבלוג.

הדוגמה הבאה היא פיד של בלוג עם פוסט אחד בלבד. שימו לב: ערכתם קצת את הדוגמה הזו כדי שאנשים יוכלו לקרוא אותה יותר בקלות. באופן ספציפי, פיד Blogger אמיתי מכיל מזהים וכתובות URL בפועל.

<feed xmlns='http://www.w3.org/2005/Atom'>
  <id>tag:blogger.com,1999:blog-blogID</id>
  <updated>2006-11-08T18:10:23.020-08:00</updated>
  <title type='text'>Lizzy's Diary</title>
  <link rel='alternate' type='text/html'
    href='http://blogName.blogspot.com/index.html'>
  </link>
  <link rel='http://schemas.google.com/g/2005#feed'
    type='application/atom+xml'
    href='http://blogName.blogspot.com/feeds/posts/default'>
  </link>
  <link rel='self' type='application/atom+xml'
    href='http://blogName.blogspot.com/feeds/posts/default'>
  </link>
  <author>
    <name>Elizabeth Bennet</name>
    <email>noreply@blogger.com</email>
    <uri>http://www.blogger.com/profile/profileID</uri>
  </author>
  <generator version='7.00' uri='http://www2.blogger.com'>Blogger</generator>
  <entry>
    <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>
    <author>
      <name>Elizabeth Bennet</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/profileID</uri>
    </author>
  </entry>
</feed>

אחזור פוסטים באמצעות פרמטרים של שאילתה

בעזרת Blogger Data API תוכלו לבקש קבוצה של רשומות שתואמות לקריטריונים מסוימים, כגון בקשת פוסטים בבלוג שפורסמו או עודכנו בטווח תאריכים נתון.

לדוגמה, כדי לשלוח שאילתה בטווח תאריכים, מוסיפים את הפרמטרים published-min ו-published-max לכתובת ה-URL של הבקשה. כדי לקבל את כל הערכים בבלוג שנוצרו בין 16 במרץ 2008 ל-24 במרץ 2008, שלחו בקשת HTTP לכתובת האתר של הפיד של הבלוג:

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

כששולחים את הבקשה ל-GET, Blogger מחזיר קוד סטטוס HTTP 200 OK ופיד שמכיל את כל הפוסטים בבלוגים שנוצרו בטווח התאריכים שציינתם.

הפרמטרים של updated-min ושל updated-max עשויים גם לשמש לעדכון כל רשומות הבלוג בטווח נתון. עם זאת, המערכת תתעלם מהפרמטרים האלה אלא אם הפרמטר orderby יוגדר גם כ-updated.

ב-Blogger Data API יש תמיכה בפרמטרים הבאים של שאילתות:

Alt
סוג הפיד להחזרה, למשל atom (ברירת המחדל) או rss.
/category
קביעת קטגוריות (נקראות גם תוויות) לסינון תוצאות הפיד. לדוגמה, הפונקציה http://www.blogger.com/feeds/blogID/posts/default/-/Fritz/Laurie מחזירה רשומות עם התוויות Fritz ו-Laurie.
תוצאות מקסימליות
המספר המרבי של ערכים להחזרה.
Orderby
הסדר שבו יש להחזיר ערכים, כגון lastmodified (ברירת המחדל), starttime או updated.
דקות פרסום, מועד פרסום מרבי
הגבולות של תאריכי הפרסום.
אינדקס התחלתי
האינדקס מבוסס-1 של התוצאה הראשונה שאוחזר (להחלפה).
הגרסה המעודכנת, דקות מעודכנות
הגבולות בתאריכי עדכון הרשומות. המערכת תתעלם מהפרמטרים של השאילתות האלה, אלא אם הפרמטר orderby מוגדר כ-updated.

למידע נוסף על פרמטרים של שאילתות, ניתן לעיין במדריך העזר לממשקי API של Blogger Data ובמדריך העזר לממשקי API של Google Data.

מתבצע עדכון פוסטים

כדי לעדכן פוסט קיים בבלוג, קודם כל צריך לאחזר את הרשומה שאתם רוצים לעדכן, ואז לשנות אותה ואז לשלוח בקשת PUT, עם הרשומה המעודכנת בגוף ההודעה, לכתובת ה-URL לעריכה של הפוסט. יש לוודא שהערך <id> ברשומה PUT תואם בדיוק ל-<id> של הערך הקיים.

כתובת ה-URL לעריכה מודגשת ברשומה הבאה:

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

חשוב: כדי להבטיח תאימות קדימה, חשוב להקפיד: כאשר PUT רשומה מעודכן, אתם שומרים את כל רשומות ה-XML שהיו זמינות כשאחזרתם את הרשומה מ-Blogger. אחרת, כשאנחנו מטמיעים פריטים חדשים וכוללים <new-awesome-feature> רכיבים בפיד, הלקוחות לא יחזירו אותם והם יפספסו את המשתמשים. ספריות הלקוח של Google Data API מטפלות כולן כראוי. לכן, אם אתם משתמשים באחת מהספריות, אתם מוכנים.

הערה: כרגע אין תמיכה בשינוי נתוני המחבר המשויכים לפוסטים.

טיפ לפתרון בעיות: חומות אש מסוימות חוסמות הודעות HTTP PUT. כדי לעקוף את הבעיה, אפשר לכלול כותרת X-HTTP-Method-Override: PUT בבקשת POST. פרטים נוספים ניתן למצוא במסמך מידע בסיסי על פרוטוקולי Google Data API.

מחיקת פוסטים

כדי למחוק פוסט, יש לשלוח בקשה אל DELETE לכתובת ה-URL לעריכה של הפוסט. זוהי אותה כתובת URL לעדכון פוסטים.

טיפ לפתרון בעיות: חומות אש מסוימות חוסמות הודעות HTTP DELETE. כדי לעקוף את הבעיה, אפשר לכלול כותרת X-HTTP-Method-Override: DELETE בבקשת POST. פרטים נוספים ניתן למצוא במסמך מידע בסיסי על פרוטוקולי Google Data API.

תגובות

ה-Blogger Data API מאפשר ליצור, לאחזר ולמחוק תגובות. אין תמיכה בעדכון תגובות (וגם לא זמין בממשק האינטרנט).

יצירת תגובות

כדי לפרסם תגובה, צריך ליצור רכיב Atom <entry> כמו זה:

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

כדי לפרסם את התגובה הזו, יש להציב את רכיב ה-Atom <entry> בתוך גוף בקשת POST חדשה, באמצעות סוג התוכן application/atom+xml. לאחר מכן, שלחו את בקשת POST לכתובת ה-URL המתאימה של Blogger:

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

הערה: כרגע אפשר לפרסם תגובות רק בבלוג שבבעלות המשתמש המאומת.

הערה: בשלב זה אין תמיכה בהגדרת מחבר מותאם אישית לתגובות. כל התגובות החדשות יופיעו כאילו הן נוצרו על ידי המשתמש המאומת הנוכחי.

מתבצע אחזור של התגובות

ניתן לאחזר את התגובות לפוסט ספציפי על ידי שליחת GET לכתובת ה-URL של פיד התגובות הזה:

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

לחלופין, אפשר לקבל את התגובות מכל הפוסטים באמצעות פיד התגובות בבלוג:

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

הבקשות האלה יחזירות פיד תגובות שנראה כך:

<feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/"
         xmlns:thr="http://purl.org/syndication/thread/1.0">
  <id>tag:blogger.com,1999:blog-blogID.post-postID.comment-commentID</id>
  <updated>2007-04-04T21:56:29.803-07:00</updated>
  <title type="text">My Blog : Time to relax</title>
  <link rel="alternate" type="text/html" href="http://blogName.blogspot.com/2007/04/first-post.html"/>
  <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://blogName.blogspot.com/feeds/postID/comments/default"/>
  <author>
    <name>Blog Author name</name>
  </author>
  <generator version="7.00" uri="http://www2.blogger.com">Blogger</generator>
  <openSearch:totalResults>1</openSearch:totalResults>
  <openSearch:startIndex>1</openSearch:startIndex>
  <entry>
    <id>tag:blogger.com,1999:blog-blogID.post-commentID</id>
    <published>2007-04-04T21:56:00.000-07:00</published>
    <updated>2007-04-04T21:56:29.803-07:00</updated>
    <title type="text">This is my first comment</title>
    <content type="html">This is my first comment</content>
    <link rel="alternate" type="text/html" href="http://blogName.blogspot.com/2007/04/first-post.html#commentID"/>
    <link rel="self" type="application/atom+xml" href="http://blogName.blogspot.com/feeds/postID/comments/default/commentID"/>
    <link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/blogID/postID/comments/default/commentID"/>
    <thr:in-reply-to href="http://blogName.blogspot.com/2007/04/first-post.html" 
                     ref="tag:blogger.com,1999:blog-blogID.post-postID" 
                     source="http://www.blogger.com/feeds/posts/default/blogID"
                     type="text/html"/>
    <author>
      <name>Blog Author name</name>
      <email>blog_author@gmail.com</email>
      <uri>http://www.blogger.com/profile/userID</uri>
    </author>
    <thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' 
         href='http://blogName.blogspot.com/2007/04/first-post.html' 
         ref='tag:blogger.com,1999:blog-blogID.post-postID' 
         source='http://blogName.blogspot.com/feeds/posts/default/postID'
         type='text/html' />
  </entry>
</feed>

מחיקת תגובות

כדי למחוק תגובה, יש לשלוח בקשת DELETE אל כתובת ה-URL לעריכה של התגובה. כתובת ה-URL הזו מודגשת בפיד התגובות שלמעלה.

פורמט הייצוא

Blogger מאפשר למשתמשים לייצא ולייבא את הבלוגים שלהם באמצעות קובץ ייצוא של Blogger. קובץ הייצוא הזה מכיל את כל הפוסטים והתגובות לבלוג אחד. הפורמט של קובץ הייצוא זהה לפורמט Atom שמתואר בקטעים לאחזור פוסטים ותגובות. קובץ הייצוא יכלול את התוכן של פיד הפוסטים ואת התוכן של פיד התגובות, משולבת במסמך אחד.

כדי לייצא או לייבא נתוני בלוג באמצעות פורמט הייצוא, אפשר להיכנס לדף הגדרות של הבלוג. כדי לאחזר את קובץ הייצוא עבור בלוג באמצעות Data API, צריך להשתמש בכתובת ה-URL הבאה:

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

כדי לייבא את קובץ הייצוא, יוצרים בקשה ב-POST לכתובת ה-URL הבאה, עם תוכן קובץ הייצוא בתור נתוני הבקשה, ו-application/atom+xml בתור סוג התוכן:

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

אף אחת מכתובות ה-URL שלמעלה לא תומכת בפרמטרים של שאילתה. שתי הבקשות צריכות לכלול גם מידע על אימות, ורק מנהלי בלוג יוכלו לייבא/לייצא את הבלוג באמצעות כתובות האתרים של העדכונים האלה.

הערה: אם אתם יוצרים קובץ ייצוא משלכם ב-Blogger, יש כרגע הגבלה אחת על הסדר של רשומות הפוסט והתגובות. קובץ הייצוא של Blogger יציג תחילה את כל הפוסטים, ואז את כל התגובות. מותר למקם פוסטים ותגובות בין תגובות כל עוד רשומת התגובה מופיעה אחריה.

למידע נוסף על אופן השימוש של Blogger בפורמט Atom בקובץ הייצוא, ניתן לעיין במדריך העזר לפרוטוקול.

חזרה למעלה