「GeneXusでAPIはどうすれば作れますか?」との質問をいただいたので、本日は簡単なAPIを作ってみようと思います。
事前準備
今回は商品テーブルを参照し、商品データを返すAPIを作ろうと思います。
まず商品テーブルを下記のような感じで作ります。

合わせてSDTも作成します。

トランザクションが出来たら、後ほどAPIで取得するデータを登録しておきます。

API作成
では早速APIを作ってきましょう。
まずAPIはプロシージャで作成します。
プロシージャのRulesは下記のように記載。

パラメータとして商品IDを受け取って、商品の情報をSDTに格納して返します。
Sourceは下記のような感じ。

商品IDが渡ってこなかったら全件返すようにします。
プログラムの記述は以上で終了。
ただこれだとただのプロシージャなので、プロパティを変更します。
プロシージャのプロパティにあるExpose as Web ServiceをTrueに変更してください。
Main programはTrueでもFalseでもどちらでもいいです。

これでAPIの作成が完了。
API呼出検証
APIが出来たら実際に呼んでみましょう。
今回はPostmanと言うツールから呼びます。
Postmanは下記からダウンロード可能です。
https://www.postman.com/jp/downloads/
Postmanの設定は下記の通り。

まずプロシージャはPOSTで呼びます。
またURIに関してはアプリを実際に動かすときのURLと同様なのですが、プロシージャ名の前に「rest/」と付けてあげてください。
プロシージャ名は実際に定義している名前と同じにしてください。
(大文字小文字も合わせる)
またパッケージ名は不要です。
ボディにパラメータを書きます。
こちらはRulesで記載した変数名と合わせて書いてください。
(「&」は不要です)
また今回は数値型なので「0」と記載してますが、文字型の場合は「”(ダブルクォーテーション)」で囲ってあげてください。
で、実際に呼んで返ってきた結果が下記となります。

パラメータとして商品IDを渡してないので全件取得してます。
次にパラメータを渡した結果が下記となります。

正常に1商品だけ取得してますね。
まとめ
プロシージャがプロパティ1つでAPIになるのは便利ですね。
プロパティを変えても普通のプロシージャと同様にWebPanel等からも呼ぶことが可能です。
今回はデータを取得するAPIを作りましたが、データの作成や更新、削除のプロシージャを作ればそれをAPIとして呼ぶことも可能です。
また今回はGAMなどの認証は使っていないので、APIを呼ぶときに認証は入れてませんが、GAMを使っている場合はAPIキーだったり、アクセストークンだったりが必要になってきます。
やり方は下記に書いてあるので、今度時間があるときに試してみようと思います。
http://wiki.genexus.jp/hwiki.aspx?%e3%82%a2%e3%83%97%e3%83%aa%e3%82%b1%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%81%8b%e3%82%89+API+%e3%82%ad%e3%83%bc%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6%e3%82%b5%e3%83%bc%e3%83%93%e3%82%b9%e3%82%92%e8%a6%81%e6%b1%82%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95,