5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

セゾンテクノロジーAdvent Calendar 2024

Day 19

【HULFT Square】RDSから在庫データをAPIでじゃんじゃか取得

Last updated at Posted at 2024-12-18

はじめに

本記事では "ゆる~く" HULFT Squareのご紹介をします。
HULFT Squareはセゾンテクノロジーが提供する国産iPaaSです。

是非こちらの公式HP公式マニュアルへお越しください。

以下内容はご参考となりますので、実際にご検証、マニュアルのご参照をお願い致します。

また弊社サポートへお問い合わせいただいても
お答えできない場合がございます🙇
是非コメント欄でご意見いただければと幸いです。

きっかけ

とあるお客様(複数社様)とお話をしている中で
在庫データをハンディからAPI経由で取得したいと。
非常にiPaaSらしい使い方かもしれません。

もちろんこの仕組みはAWS API GatewayとLambdaを
統合して作成することは可能です。
ただし今回はこれをHULFT Squareで作ることで、
(今回は作り込みませんが)APIでデータを返す前に加工変換処理をノーコードで追加
することができます。
その他に処理完了時のメール通知やslack通知も可能です。

今回はやってみた記事なので、APIでDBの在庫情報を
じゃんじゃか取得するだけにしようと思います。

今日やることイメージ

こんな感じ
構成イメージ.jpg

作っていった順番に解説していく~~

RDSにてテーブル作成

今回はRDS PostgreSQL 15を利用しています。
PL/pgSQLにてテーブル作成しました。

テーブル作成のサンプル
-- テーブルの作成
CREATE TABLE stock (
    ShohinCd text PRIMARY KEY,
    Zaiko bigint,
    OrosiKakaku bigint,
    DeliveryDate date
);

-- データの挿入
DO $$
DECLARE
    i int;
    shohin_cd text;
    zaiko bigint;
    delivery_date date := CURRENT_DATE + INTERVAL '3 days';
BEGIN
    FOR i IN 1..10000 LOOP
        shohin_cd := LPAD(i::text, 5, '0');
        zaiko := FLOOR(RANDOM() * 90 + 10)::bigint; -- ランダムな2桁の数字
        INSERT INTO stock (ShohinCd, Zaiko, OrosiKakaku, DeliveryDate)
        VALUES (shohin_cd, zaiko, 500, delivery_date);
    END LOOP;
END $$;

こんな感じで10000レコードできました。

image.png

  • 商品コード(shohincd)は00001〜10000まで連番で作成
  • 在庫数(zaiko)はランダムな2桁の数字
  • 卸値(orosikakaku)は全て500
  • 配達日(deliverydate)は全てデータ入力日から3日後を設定

HULFT Squareの処理作成

HSQ.jpg

RDSに対してSELECTをかけ、XML変換(マッピング)にて
テーブル型からXML形式のデータへ変換しております。
API Client(今回はApidog)からHULFT Squareへリクエストを投げると
↑のスクリプトが動きます。

つまりHULFT SquareのAPIマネジメント機能では
皆様が作成された固有の処理をAPIとして公開できます。
もちろんセキュリティ設定(IPフィルタ・Bearer認証)も可能です。

APIマネジメントの設定方法は
こちらのQiita記事公式マニュアルをご確認ください。

Apidogの設定

細かい設定は他の方にお任せするとして。
(※弊社メンバーもQiita記事書いてました。)

今回はクエリパラメータに格納する値を動的に変更しますので、以下の設定をしています。

半年ほど前にApidogのDiscordで教えて貰った内容になります。
今はもっと簡単な方法があるかもです。

まずクエリパラメータに
{{paddedNumber}}という変数を設定します。

image.png

そして前処理にカスタムスクリプトを追加します。
image.png

let randomNumber = Math.floor(Math.random() * 10000) + 1;
let paddedNumber = randomNumber.toString().padStart(5, '0');
pm.variables.set("paddedNumber", paddedNumber);

これで設定は以上です。
(だいぶ端折りましたが・・・)

こんな感じで動きますの

以上!

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?