コンテンツにスキップ

Open API と SDK

バージョン 2.6.4 で追加

DataFlux Func は完全な Open API サポートを提供しており、付属の DataFlux Func SDK を使用してプログラムから呼び出すことができます。

1. Open API ドキュメントページを有効にする

「実験的機能」で Open API のドキュメントページを有効にすることができます。

DataFlux Func SDK には署名機能が含まれており、単一ファイルとして公開されています。ユーザーはそのままプロジェクトに組み込んで使用できます。

enable-openapi-doc.png

2. Access Key を作成する

  1. あなたの DataFlux Func にログインします
  2. 「管理 / 実験的機能」で Access Key 管理を有効にします
  3. 「管理 / Access Key」で「新規作成」をクリックして Access Key を作成します

3. SDK を使用してリクエストを送信する

DataFlux Func SDK は複数のプログラミング言語をサポートしています。ダウンロード先は以下のとおりです。

言語 ダウンロード先 説明
Python dataflux_func_sdk.py 単一ファイル、基本使用には依存関係がありません。アップロード機能は requests ライブラリに依存します
Node.js dataflux_func_sdk.js 単一ファイル、基本使用には依存関係がありません。アップロード機能は form-data ライブラリに依存します
Golang dataflux_func_sdk.go 単一ファイル、完全に依存関係なし
デモ: dataflux_func_sdk_demo.go

リクエスト送信の例は以下のとおりです。

Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
from dataflux_func_sdk import DataFluxFunc

# DataFlux Func 操作オブジェクトを作成する
dff = DataFluxFunc(ak_id='ak-xxxxx', ak_secret='xxxxxxxxxx', host='localhost:8088')

# Debug を有効にする
dff.debug = True

# GET リクエストを送信する
try:
    status_code, resp = dff.get('/api/v1/do/ping')

except Exception as e:
    print(colored(e, 'red'))
    raise

# POST リクエストを送信する
try:
    body = {
        'echo': {
            'int'    : 1,
            'str'    : 'Hello World',
            'none'   : None,
            'boolean': True,
        }
    }
    status_code, resp = dff.post('/api/v1/do/echo', body=body)

except Exception as e:
    print(colored(e, 'red'))
    raise

# ファイルをアップロードする
try:
    filename = 'your_file'
    with open(filename, 'rb') as _f:
        file_buffer = _f.read()

    fields = {
        'folder': 'test'
    }

    status_code, resp = dff.upload('/api/v1/resources/do/upload',
        file_buffer=file_buffer,
        filename=filename,
        fields=fields)

except Exception as e:
    print(colored(e, 'red'))
    raise
JavaScript
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
var fs = require('fs');
var DataFluxFunc = require('./dataflux_func_sdk.js').DataFluxFunc;

// DataFlux Func 操作オブジェクトを作成する
var opt = {
  akId    : 'ak-xxxxx',
  akSecret: 'xxxxxxxxxx',
  host    : 'localhost:8088',
};
var dff = new DataFluxFunc(opt);

// Debug を有効にする
dff.debug = true;

// GET リクエストを送信する
var getOpt = {
  path: '/api/v1/do/ping',
};
dff.get(getOpt, function(err, respData, respStatusCode) {
  if (err) console.error(colored(err, 'red'))

  // POST リクエストを送信する
  var postOpt = {
    path: '/api/v1/do/echo',
    body: {
      'echo': {
        'int'    : 1,
        'str'    : 'Hello World',
        'none'   : null,
        'boolean': true,
      }
    }
  };
  dff.post(postOpt, function(err, respData, respStatusCode) {
    if (err) console.error(colored(err, 'red'))

    // ファイルをアップロードする
    var filename = 'your_file';
    var uploadOpt = {
      path      : '/api/v1/resources/do/upload',
      fileBuffer: fs.readFileSync(filename),
      filename  : filename,
      fields    : {
        'folder': 'test'
      },
    };
    dff.upload(uploadOpt, function(err, respData, respStatusCode) {
      if (err) console.error(colored(err, 'red'))
    });
  });
});
Go
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package main

import (
    "os"
    "bytes"
    "fmt"
    "io"
    "mime/multipart"

    // DataFlux Func SDK
    "./dataflux_func_sdk"
)

var (
    colorMap = map[interface{}]string{
        "grey":    "\033[0;30m",
        "red":     "\033[0;31m",
        "green":   "\033[0;32m",
        "yellow":  "\033[0;33m",
        "blue":    "\033[0;34m",
        "magenta": "\033[0;35m",
        "cyan":    "\033[0;36m",
    }
)

func main() {
    host := "localhost:8088"
    if len(os.Args) >= 2 {
        host = os.Args[1]
    }

    // DataFlux Func 操作オブジェクトを作成する
    dff := dataflux_func_sdk.NewDataFluxFunc("ak-xxxxx", "xxxxxxxxxx", host, 30, false)

    // Debug を有効にする
    dff.Debug = true

    // GET リクエストを送信する
    _, _, err := dff.Get("/api/v1/do/ping", nil, nil, "")
    if err != nil {
        panic(err)
    }

    // POST リクエストを送信する
    body := map[string]interface{}{
        "echo": map[string]interface{}{
            "int"    : 1,
            "str"    : "Hello World",
            "none"   : nil,
            "boolean": true,
        },
    }
    _, _, err = dff.Post("/api/v1/do/echo", body, nil, nil, "")
    if err != nil {
        panic(err)
    }

    // ファイルをアップロードする
    filename := "dataflux_func_sdk_demo.go"
    file, _ := os.Open(filename)
    fileContents, _ := io.ReadAll(file)

    uploadBody := &bytes.Buffer{}
    writer := multipart.NewWriter(uploadBody)

    part, _ := writer.CreateFormFile("files", filename)
    part.Write(fileContents)

    fields := map[string]string{
        "folder": "test",
    }
    for key, value := range fields {
        writer.WriteField(key, fmt.Sprintf("%v", value))
    }

    writer.Close()
    contentType := writer.FormDataContentType()

    _, _, err = dff.Upload("/api/v1/resources/do/upload", filename, "", fields, nil, nil, uploadBody, contentType)
    if err != nil {
        panic(err)
    }
}