投稿者:Mitsuhiro Okamoto | 投稿日:2011年11月04日(金) 10:03

55x55integration Spring '11で正式リリースされたREST APIと、現在パイロットリリース中のStreaming APIですが、Winter '12ではいくつかの機能追加及び変更がありました。以下詳細です。

 

 

REST APIでバイナリデータサポート改善

REST APIでのバイナリデータ(Blob)アップロードは従来50MBまででしたが(base64エンコード後のサイズ)、Winter '12リリースでは、multipartタイプを使用して500MBまでのblobファイルをアップロード出来るようになりました。

multipart/form-dataで送信されるデータの構造はEmailのraw dataと似た構成になっています。

--boundary_string
Content-Disposition: form-data; name="entity_document";
Content-Type: application/json
{
    "Description" : "Marketing brochure for Q1 2011",
    "Keywords" : "marketing,sales,update",
    "FolderId" : "005D0000001GiU7",
    "Name" : "Marketing Brochure Q1",
     "Type" : "pdf"
}

--boundary_string
Content-Type: application/pdf
Content-Disposition: form-data; name="Body";
filename="2011Q1MktgBrochure.pdf"

ここにバイナリデータが入る

--boundary_string--

 

より詳しい情報は最新のREST APIドキュメント(英語)を御覧ください。

 

Streaming APIのOAuth tokenの扱い変更

Streaming APIのSummer '11リリースでは OAuth Tokenのやりとりにcookieを利用していましたが、Winter '12リリースではHTTP Authorizationヘッダに付与するように変更されました。

Authorization: OAuth sessionId

 
この変更によってCookieではなくJavascriptによって自由にAuthorizationヘッダを設定できるので、REST APIとの共存がより簡単になりました。

 

Streaming APIのcannelのprefixに"/topic/"が付与

Streaming APIのWinter '12でのもうひとつの大きな変更として、Bayeux(CometD)プロトコルで送信されるデータのcannel名には、"/topic/" + PushTopic名が用いられるようになりました。これによって、例えばjQueryのCometDバインドを使った例では以下の様に記述するようになります。

var cometdUrl = 'https://' + window.location.hostname + '/cometd/23.0/';
var auth = 'OAuth {!$Api.Session_ID}';
$.cometd.init({
    url: cometdUrl,
    requestHeaders: { Authorization: auth }
});

$.cometd.subscribe('/topic/AccountTopic', function(message) {
    //ここに受信時の処理を記述
});

 

Streaming APIにおけるタイムアウトの変更 

最後のWinter '12における大きな変更は、セッションタイムアウト値がhandshakes、connects、subscribesのたびにリセットされるようになりました。詳細は最新のSreaming APIドキュメント(英語)に記載されています。

 

Streaming APIはWinter '12の時点ではパイロットリリースとなっています。実際にDeveloper Editionで試してみたい方はセールスフォース・ドットコムへお問合せ下さい。

Streaming APIはまだ開発途中の機能ですが、リアルタイムなPush通知が実装できるようになるなど、非常に大きな可能性を秘めています。Database.comでも使えるようになる予定ですので、是非ご期待下さい。