-
Notifications
You must be signed in to change notification settings - Fork 5
DataAPI SDK japanese MT.DataAPI Endpoint methods overview
Taku AMANO edited this page Jul 9, 2013
·
8 revisions
エンドポイントの定義の中の route
要素 (例えば /:site_id/entries
) に含まれる、:site_id
のような部分をメソッドパラメータと呼びます。
エンドポイントにアクセスするメソッドに関しては、以下のように様々な形式でこのメソッドパラメータを指定することができます。
var siteId = 1;
api.listEntries(siteId, function(response) {
// レスポンスデータを使った処理
});
var site = {
id: 1
};
api.listEntries(site, function(response) {
// レスポンスデータを使った処理
});
var siteId = function() { return 1 };
api.listEntries(siteId, function(response) {
// レスポンスデータを使った処理
});
var site = {
id: function() { return 1 }
};
api.listEntries(site, function(response) {
// レスポンスデータを使った処理
});
クエリパラメータやリクエストボディは以下のように様々な形式で指定することができます。
var query = 'search=QUERY';
api.listEntries(site, query, function(response) {
// レスポンスデータを使った処理
});
var query = {
search: 'QUERY'
};
api.listEntries(site, query, function(response) {
// レスポンスデータを使った処理
});
<form id="search-form">
<input type="text" name="search" />
</form>
<script type="text/javascript">
var query = document.getElementById('search-form');
api.listEntries(site, query, function(response) {
// レスポンスデータを使った処理
});
</script>
// This code requires that your browser had implemented FormData.
var query = new FormData();
query.append('search', 'query');
api.listEntries(site, query, function(response) {
// レスポンスデータを使った処理
});
新規作成時やアップデート時に指定するリソースは、以下のように様々な形式で指定することができます。
// データの内容は正確である必要はなく、必要なデータのみが入ったObjectを渡すことができます。
// また不必要なデータが入っていても問題はありません。
var data = {
title: 'TITLE',
body: 'BODY'
};
api.updateEntry(site, entryId, data, function(response) {
// レスポンスデータを使った処理
});
APIから取得したデータをそのまま渡すこともできます。
api.getEntry(site, entryId, function(entry) {
entry.title = 'UPDATED TITLE';
api.updateEntry(site, entryId, entry, function(response) {
// レスポンスデータを使った処理
});
});
<form id="entry-form">
<input type="text" name="title" />
<textarea name="body" />
</form>
<script type="text/javascript">
var data = document.getElementById('entry-form');
api.createEntry(site, data, function(response) {
// レスポンスデータを使った処理
});
</script>
ファイルに関してもいくつかの方法で指定することができます。
ただどの方法を利用する場合においても、ファイルの指定に関しては一つ注意の必要な点があります。それは、IEではJavaScriptでファイル選択ダイアログを開いた場合に、セキュリティ上の制限からJavaScriptでファイルを送信することができなくなるという点です。
例えば以下のコードで送信しようとした場合、IEではセキュリティエラーが発生します。
<form>
<input type="file" name="file" id="file" />
</form>
<a href="#" id="select-file">Select file</a>
<script type="text/javascript">
document.getElementById("select-file").onclick = function() {
getElementById("file").click();
return false;
};
var data = {
file: getElementById("file").files[0],
};
api.uploadAsset(siteId, data, function(response) {
if (response.error) {
// エラー処理
return;
}
// レスポンスデータを使った処理
});
</script>
このケースでは、以下のようにLABEL要素を使って書き換えることでこの制限を回避することができます。
<form>
<input type="file" name="file" id="file" />
</form>
<label for="file">Select file</label>
<script type="text/javascript">
var data = {
file: getElementById("file").files[0],
};
api.uploadAsset(siteId, data, function(response) {
if (response.error) {
// エラー処理
return;
}
// レスポンスデータを使った処理
});
</script>
以下、ファイルの指定方法の説明になります
var data = {
file: getElementById('file-input').files[0]
};
api.uploadAsset(siteId, data, function(response) {
// レスポンスデータを使った処理
});
var data = {
file: getElementById('file-input')
};
api.uploadAsset(siteId, data, function(response) {
// レスポンスデータを使った処理
});
<form id="asset-form">
<input type="file" name="file" />
</form>
<script type="text/javascript">
var data = document.getElementById('asset-form');
api.uploadAsset(siteId, data, function(response) {
// レスポンスデータを使った処理
});
</script>
api.createEntry(site, data, function(response) {
console.log(response); // アンシリアライズされたレスポンスデータ
});
api.createEntry(site, data, function(response) {
if (response.error) {
console.log(response.error.code); // HTTPレスポンスコード
console.log(response.error.message); // エラーメッセージ
console.log(response.error.data); // 現在のエラーが追加のデータを持っている場合
}
});