スクリプト開発 / 関数の作成と呼び出し
このドキュメントは、DataFlux Func 上でスクリプトを開発するための最も基本的なドキュメントです。読むことで、DataFlux Func 上で最も基本的な開発・利用作業を行うことができます。
1. 事前の注意
DataFlux Func の利用中に、
複数人で同じアカウントにログインしたり、複数人で同じコードを同時に編集したりしないでください。
コードの相互上書きや消失を防ぐためです。
2. 最初の関数を作成して呼び出す
DataFlux Func でのコード作成は、通常の Python コード作成と大きな違いはありません。
API としてエクスポートする必要がある関数には、組み込みの @DFF.API(...) デコレーターを追加するだけで実現できます。
関数の戻り値はインターフェースの戻り値であり、戻り値が dict、list の場合、システムは自動的に JSON として返します。
典型的な関数は次のとおりです:
| Python | |
|---|---|
1 2 3 4 5 6 | |
DataFlux Func プラットフォームでは、DFF.API(...) で修飾されたこのような関数を呼び出すための複数の方法が提供されています:
| 実行機能 | 特長 | 適用シーン |
|---|---|---|
| 同期実行の関数 API | 同期 HTTP API を生成します。呼び出し後、処理結果を直接返します | 処理時間が短く、クライアントが即座に結果を取得する必要がある場合 |
| 非同期実行の関数 API | 非同期 HTTP API を生成します。呼び出し後すぐに応答しますが、処理結果は返しません | 処理時間が長く、API 呼び出しが起動シグナルとしてのみ使用されるシーン |
| 定期実行タスク | Crontab 構文に基づいて自動実行します | 定期的な同期 / データキャッシュ、定期実行タスクなどの場合 |
詳細は スクリプト開発 / 基本概念
ここで、この関数に関数 API を作成すると、パブリックネットワーク経由の HTTP でこの関数を呼び出せるようになります。
この関数用に作成した「関数 API」の ID が func-api-xxxxx であるとすると、この関数を呼び出す最も簡単な方法は次のとおりです:
| Text Only | |
|---|---|
1 | |
レスポンスは次のとおりです(一部省略):
| Text Only | |
|---|---|
1 2 3 4 | |
3. ファイルアップロードに対応した関数を作成する
DataFlux Func は、関数 API を介したファイルアップロードにも対応しています。
アップロードされたファイルを処理する必要がある場合は、関数に files パラメーターを追加して、アップロードされたファイル情報を受け取ることができます。
ファイルがアップロードされると、DataFlux Func は後続の処理のためにスクリプトが利用できる一時アップロードディレクトリに自動的に保存します。
| 例 | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 | |
files パラメーターは DataFlux Func システムによって自動的に入力されます。内容は次のとおりです:
| JSON | |
|---|---|
1 2 3 4 5 6 7 8 9 | |
ファイルアップロードのサンプルコマンドは スクリプト開発 / 基本概念 / 関数 API / POST 簡略化パラメーター送信 を参照してください。
4. 非 JSON・Form データを受け取る
1.6.9 バージョンで追加
場合によっては、リクエストがサードパーティのシステムやアプリケーションによって独自の形式で送信され、リクエストボディが JSON や Form 形式ではないことがあります。その場合は、**data を入力パラメーターとして使用し、POST 簡略化形式で呼び出すことができます。
システムは、テキストや解析できないデータを受信した場合、自動的に { "text": "<テキスト>" } または { "base64": "<Base64 形式のバイナリデータ>"} にパッケージ化し、関数に渡します。
サンプルコードは次のとおりです:
| Python | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
リクエストボディがテキストの場合
リクエストは次のとおりです:
| Bash | |
|---|---|
1 | |
出力は次のとおりです:
| Text Only | |
|---|---|
1 | |
リクエストボディが未知の形式の場合
リクエストは次のとおりです:
| Bash | |
|---|---|
1 | |
出力は次のとおりです:
| Text Only | |
|---|---|
1 | |