OutSystemsでRESTの4メソッドを作成する

あるリソースに対して、HTTPのメソッドとCRUD処理を対応させるRESTらしいAPIを実装してみます。

作り方

Service Studioで、Logic>Integrations>RESTを右クリックして「Expose REST API」。

最初は、ここでリソース名を指定して、その下にCRUDに対応する4種類のメソッドだけを追加しようと思いました。

しかし、そうすると、個別のメソッドのURL Pathを「/」に変える事ができません。デフォルトで有効になっているSwaggerのAPIドキュメントがその位置にあって重複するためです。折角自動で作成されるドキュメントなので、無効にはせず別の方法にしました。

以下、リソース名は、サンプルについてくるContactsとして説明すると、

  • 「Expose REST API」で追加するAPIを1リソースでなく、複数リソースからなる一連の機能の塊と考える
  • CRUDの4メソッドはその下にGetContactsのように命名して作成
  • メソッドの「URL Path」を「/Contacts」に変更
  • 「HTTP Method」を追加ならPOST、読み取りならGET、更新ならPUT、削除ならDELETEにする

実装例

API名はとりあえずチュートリアルからPhoneBookとしました。

その下にContactsリソースに対するCRUDを定義してあります。

追加メソッド:CreateContact

入力:Contact(Entity1レコード分)

出力:追加したレコードのContactId(EntityのId)

プロパティ変更点:URL Path→/Contacts、HTTP Method→POST

読み取りメソッド:GetContact

入力:ContactId(EntityのId)

出力:Contact(Entity1レコード分)

プロパティ変更点:URL Path→/Contacts、HTTP Method→GET

更新メソッド:UpdateContact

入力:Contact(Entity1レコード分)

出力:UpdatedContact(更新後のEntity1レコード分)

プロパティ変更点:URL Path→/Contacts、HTTP Method→PUT

削除メソッド:DeleteContact

入力:ContactId(EntityのId)

プロパティ変更点:URL Path→/Contacts、HTTP Method→DELETE

実行例

FiddlerのComposerで実行してみます。

アクセスするURLみんな以下で同じです。

<モジュールのURL>/rest/PhoneBook/Contacts

追加・更新メソッド

ヘッダに「Content-Type: application/json」を追加し、以下の内容をリクエストボディに設定。

{
    "Name":"Test User1",
    "JobTitle":"Sales Representative",
    "Phone":"000-00000000",
    "Email":"test@example.com"
}

結果として、追加されたレコードのID(184のような形式)が返ってきました。

更新の場合は、更新されたレコード全体が返ってきます。

読み取り・削除メソッド

URL末尾に対象レコードのID(上で返ってきた値)をつけてリクエストします。

?ContactId=184

読み取りの場合は以下のようなJSONが返ってきます。削除はなにも返さないようにしているので、レスポンスボディは空です。

{"Id":184,"Name":"Test User2","JobTitle":"Sales Representative","Phone":"000-00000000","Email":"test@example.com"}

シェアする

  • このエントリーをはてなブックマークに追加

フォローする