KNIMEを使用し、APIにPOSTリクエストを行うためのヒントを記した記事
あまり使用頻度がなく、記憶が消滅してしまいそうなので投稿した
使用Node:Post Request / String to JSON / JSON to Table
- APIとは&KNIMEでのAPI利用
- 参考WFの例と解説
- 【Table Creator】カラム作成&URLを記述
- 【Java Snippet】JSON化したい文字列を作成
- 【String to JSON】作成した文字列をJSON化
- 【Post Request】URLにアクセスしてリクエストを実行
- 【JSON to Table】messagebodyを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