Hello, world !
Qmonus SDKでAPI開発を体験しましょう。ここでは、Hello, world!
メッセージを応答するだけのAPIを作ります。
Scenario
サービスを使って以下の定義を入力します。入力が面倒な方は、以下のyamlをGUIのアップロード機能で登録することもできます。
category: Tutorial
name: HelloWorld
uri: /tutorials/hello
method: GET
commands:
- command: script
kwargs:
code: |-
context.session.finish({"message": "Hello, world!"})
request_timeout: 60
connect_timeout: 60
routing_auto_generation_mode: true
このワークフローは、GET /tutorials/hello
のHTTPリクエストを受け付けます。ワークフローは、1つのコマンドブロックのみで構成され、1行のPythonスクリプトのみが実行されます。
context.session
は、Webセッションオブジェクトへのアクセッサです。finish
メソッドは、辞書オブジェクトまたは文字列を引数として取ります。finish
メソッドが呼び出されると、HTTP応答が返されます。
Note
組込みオブジェクトについて詳細を知りたい場合は、Docs » 名前空間 » リファレンス » Scenarioにおけるプログラミング
を参照ください。
では、早速APIを呼び出して動作を確認しましょう。
Warning
APIのエンドポイントはご利用の環境のAPI Gateway
に合わせて指定してください。本チュートリアルでは、localhost:9099
でAPI Gateway
がlistenしている前提で記述されています。
また、本シナリオへのAPIルーティングついては、routing_auto_generation_mode=True
によってご利用の環境にあるAPI Gateway
に自動的に登録されています。Routing Table
に本シナリオ向けのルーティングが登録されていることを確認してみてください。
curl
コマンドを使用してAPIを呼び出します。正しいエンドポイントが指定されていれば以下のように200 Success
応答が返却されます。
curl -i http://localhost:9099/tutorials/hello
HTTP/1.1 200 OK
Server: AXIS/Enterprise Backend Orchestration Platform
Content-Type: application/json
Date: Mon, 22 Apr 2019 23:20:05 GMT
Connection: close
Etag: "8b62459eb7dbc1885110b33c53822e180c9dd5b1"
Content-Length: 28
{"message": "Hello, world!"}
次にREPLからもcallout
組込みオブジェクトを利用してAPIを呼び出してみましょう。
>>> r = await callout(path="/tutorials/hello")↵
... print(r.body)↵
... ↵
b'{"message": "Hello, world!"}'
↵
>>>
Scenario
組込みオブジェクトのクラスメソッドを利用してAPIを直接実行することもできます。
>>> r = await Scenario.run("HelloWorld")↵
... print(r.body)↵
... ↵
{'message': 'Hello, world!'}
↵
Scenario
組込みオブジェクトでScenario
インスタンスをロードして定義を確認したり、インスタンスメソッドで実行することもできます。
>>> s = await Scenario.load("HelloWorld")↵
... print(s)↵
... ↵
command: script
id: 693742ee64d911e9a764000c29dd8250
kwargs:
code: 'context.session.finish({"message": "Hello, world!"})'↵
↵
>>> r = await s.run()↵
... print(r.body)↵
... ↵
{'message': 'Hello, world!'}↵
↵