たま氏の覚え書き

KNIME・AccessVBA・Swift等、学習したことを覚え書き

KNIME_APIの使用【Post Request】【String to JSON】【JSON to Table】

KNIMEを使用し、APIにPOSTリクエストを行うためのヒントを記した記事
あまり使用頻度がなく、記憶が消滅してしまいそうなので投稿した
使用Node:Post Request / String to JSON / JSON to Table

APIとは&KNIMEでのAPI利用

▼よくわかる解説▼
今さら聞けない「API」とは?初心者にもわかりやすく解説
読んだら忘れ、読んだら忘れる無限ループ...

基本的には、API使う人が頑張って固有の説明書(APIリファレンスというらしい)を確認し利用することになるのかとおもうので
当記事で何かを具体的に解決できるというわけではない
代わりに、上述のリンク先にもある「Web API(のREST API)」においてPOSTリクエストを行う際の、参考程度のWFを紹介する

KNIMEでのAPI利用とGETリクエストの方法については以下の記事を読めばほぼ理解できる

▼すごくよくわかる解説▼
degitalization.hatenablog.jp


参考WFの例と解説


JSONを文字列で記述しJSON化、POSTリクエストして返った内容をtable化
※URLにアクセスするので、インターネット通信が発生する(すなわち通信接続にタイムアウトがある場合にはご注意)

【Table Creator】カラム作成&URLを記述

文字列作成Node(string manipulation等)をWFの頭に設置することができないため
ダミーとしてTable Creatorを設置、設置ついでにせっかくなので2カラム準備した
また、URLは以下のサイトを利用した

▼httpbin▼
httpbin.org

▼設定例▼


Java Snippet】JSON化したい文字列を作成

JSONとは何ぞやに関しては以下のリンク先を参照

▼ものすごくわかりやすい解説▼
「JSON」とは?非エンジニアでもよくわかる解説

ここで使用するのは必ずJava Snippetである必要はない
当WFのようにレコードの値を使用すれば、WFで処理を経た(固定値ではない)値を都度設定することが可能

▼設定例▼

※必ず固定値でリクエストする場合にはNode「Conteiner Input」を使用、
 レコードのカラムをそのままJSON化したい場合には、当項での構文はすっ飛ばして「Columns to JSON」を使用するなど
 状況によって適宜対応


【String to JSON】作成した文字列をJSON

データ型をStringからJSONに変換

▼設定例▼


【Post Request】URLにアクセスしてリクエストを実行

このNodeで様々なセッティングができるので、必要な設定を必要なだけ行う
重いデータをリクエストする場合、TimeOut値の設定について考慮するとよいのやもしれない
※今回の例では最初のNodeでレコードに入れておいたURLを指定している

▼設定例▼


JSON to Table】messagebodyをtable化

JSON型の返り値messagebodyをtable化する

▼設定例▼


【結果】リクエストした情報を取得

リクエストした内容がセパレートされて参照できる
エラーコードを参照するなど、お手持ちのリファレンスを参考に情報を読み取る

▼処理結果▼

なんだこれ…( ゚Д゚)
…すこし適当すぎというか、あまり良い例が出せなかったが…使用Nodeや処理の流れを備忘できればいいのでこれでよしとする


▼KNIME Hub▼
hub.knime.com