見出し画像

Velo 第82回 APIの公開(2)

ここでは例の様に Wixサイトからエンドポイントへのアクセスを考えます。
サードパーティ製のAPIへアクセスする際の参考になります。

fetch.web.js

エンドポイントにアクセスするためには fetch( )関数を使います。
この関数はバックエンド関数なので、フロントエンドから呼び出すためには Webメソッドを使います。
ん~、正直、何かと面倒臭いですね。

今回の例は Wixサイトからエンドポイントにアクセスしているので fetch( ) を使う以上こうなってしまいます。
本来は Wixサイト以外からのアクセスを前提にしていますので、例えばターミナルから Node.js を使う場合はこの限りではありません。

Webメソッドを使うためにはバックエンドに拡張子が web.js のファイルを作り、関数をエクスポートする必要があります。
ここでは fetch.web.js というファイルをバックエンドに作っています。
ん~、やっぱり面倒臭いです。

web.jsファイルの追加

fetch( )関数

このファイルにコーディングをし、2つの関数 getRandomImage( ) とpostImage( ) を作りエクスポートしています。

ページのボタンクリックでこの2つの関数を呼び出し、HTTPリクエストを送信するのが狙いです。

fetch( ) を使ったエクスポート関数

1行目~2行目で必要なモジュールをインポートしています。
4行目でWebメソッドを使って関数 getRandomImage( ) を定義しています。
6行目でパーミッションを定め、8行目でエンドポイントをリクエストし、レスポンスのボディを非同期で取得しています。
9行目でそれをテキストメソッドでテキストに翻訳し、10行目で戻り値にしています。

14行目でWebメソッドを使って関数 postImage( ) を定義しています。
18行目~21行目では fetch( ) をPOSTメソッドで使うためのオプションを定義しています。
21行目で送信オブジェクトをJSON化しています。
18行目でエンドポイントをリクエストし、レスポンスのボディを非同期で取得しています。
23行目でレスポンスメッセージをテキストに翻訳し、24行目で戻り値にしています。

ページエレメント

2つのボタン(getImageButton、uploadImage)と、1つの入力ボックス(input1)を設置しています。

ページエレメント

getImageButton

コレクションからランダムな画像のURLをダウンロードし、ビューワーとして使うイメージ(image1)の src に代入します。下図のコードをご覧下さい。

getImageButton のコーディング

1行目でWebメソッドで作った2つの関数をインポートしています。
4行目でページの初期化時にクリックイベントを定義しています。
5行目でgetRandomImage()関数を実行し、レスポンスとしてURLを含むJSONオブジェクトを非同期で得ています。
6行目でオブジェクトに戻し、URLプロパティ(imageUrl)を取得してイメージ(image1)の src に代入しています。これで画像のダウンロードができました。

uploadButton

URLを入力する入力ボックス(input1)からURLを取り出し、画像のURLをコレクションにアップロードします。下図のコードをご覧下さい。

uploadButton のコーディング

10行目でページの初期化時にクリックイベントを登録しています。
11行目で入力ボックス(input1)で入力した画像のURLを postImage( )関数の引数に渡し実行しレスポンスを非同期で得ます。
12行目でレスポンスが帰ってくればアップロード成功メッセージを、そうでなければ失敗メッセージを3秒間表示します。

実行結果

ここでは getImageButton をクリックし、ランダムに選ばれた画像の表示を見てみましょう。以下の図です。

実行結果

Velo開発のご依頼はこちら


いいなと思ったら応援しよう!