はじめに
みなさんこんにちは、三井情報株式会社です。
ServiceNowにWebhookでデータ連携する際の機能について紹介したいと思います。
Webhookに関しては、以前「HMAC-SHA256を利用したwebhookメッセージの検証方法」というタイトルで投稿しているため、気になる方はご確認ください。
Script REST APIs
今回紹介させていただく機能はServiceNowにてAPIを作成するための機能です。
ServiceNow Docs 「Scripted REST APIs」:
https://docs.servicenow.com/bundle/rome-application-development/page/integrate/custom-web-services/concept/c_CustomWebServices.html
Scripted REST APIsを使い、他のシステムからデータ受信し、ServiceNowのテーブルにレコードを作成する検証を実施しました。
本題に入る前に、ご存知の方が多いと思いますが、簡単にAPIやRESTAPIについて記載します。
APIとは?
・Application Programming Interfaceの略
・ソフトウェアやプログラム、Webサービスの間をつなぐインターフェースのこと
REST APIとは?
・RESTの設計原則に基づいて設計されたAPIのこと
RESTの設計原則とは?
・URI(HTTPのパス)が名詞形であること
・リソースの操作(作成/閲覧/変更/削除)をHTTPのメソッドにより指定できること
・レスポンス形式がJSONもしくはXMLであること
次に、具体的なServiceNowでの設定項目と検証結果について記載します。
Script REST APIs 設定項目
①REST APIの作成
System Web Service > Scripted Web Services > Scripted REST APIs > New
Name:APIの名前
API ID:サービスのIDを設定
上記の項目を入力後Submitすると下記のような画面に遷移します。先ほど指定したIDからBase API pathが自動で作成されます。
画面下部のタブResourcesのNewを押下すると下記の画面になります。
下記の画面で、作成したいAPIメソッドやスクリプトを作成します。
検証では、HTTP methodをPOSTにしました。スクリプトでは、POSTされたデータをカンマ区切りで成形し、指定したテーブルのレコードとして新規挿入するようにしてみました。
▼スクリプトイメージ
var data = request.body.dataString;
var now_GR = new GlideRecord("レコードを挿入したいTable名");
now_GR.initialize();
for (var i = 0; i < data.length; i++){
var data_2 = data[i].split(",");
if( data[i].indexOf("Hatena") > -1 ){
now_GR.u_test_column1 = data_2[1];
}else{
now_GR.u_test_column2 = data_2[1];
}
}
now_GR.insert();
Script REST APIs 検証結果
想定通り、POSTで受けとったデータの情報を基に、レコードを作成することができました!!
おわりに
いかがでしたでしょうか。標準で用意されているREST APIではできない処理を外部システムから起動する際に、是非利用してみてください。今回の検証では、認証を検証しませんでしたが、API実行時にACLでユーザー認証を実施できるようなので、今後は認証の検証にも挑戦したいです。
最後まで読んでいただき、ありがとうございました。