最近のアクセス:
REST サービスとして公開されたプロシージャーを使用する方法

REST Web サービスとして公開されているプロシージャーを使用する簡単な例を紹介します。この Web サービスは単純なパラメーターを受け取り、何も返しません。
この例では、AddCustomer プロシージャーを GeneXus で REST Web サービスとして宣言しているため、プロパティは次のように設定されています。
  • Expose as web service = True
  • Rest protocol = True
イメージ:15318.png
このプロシージャーは、Customer を対応するテーブルに追加するために "in" パラメーターを受け取ります。
Parm ルール:
parm(in:&CustomerId,in:&CustomerName,in:&CustomerBirthDate);
ソース:
new
   CustomerId = &CustomerId
   CustomerName = &CustomerName
   CustomerBirthDate = &CustomerBirthDate
endnew
AddCustomer を REST Web サービスとして呼び出すためには、HttpClient データタイプを使用します。GeneXus クライアントは次のようになります。
// http://server:8080/BaseUrl/rest/AddCustomer
&httpclient.Host = 'server'
&httpclient.Port = 8080
&httpclient.Secure = 0
&httpclient.BaseUrl = 'Baseurl'
 
&body = &customersdt.ToJson() // &customersdt は、CustomerId、CustomerName、および CustomerBirthDate アイテムを含む SDT である CustomerSdt データタイプの変数です。&body = '{ "Customer":'+ &body + '}' 
 
&httpclient.AddHeader('Content-type','application/json')
&httpclient.AddString(&body)

&httpclient.Execute('POST','AddCustomer') 
// HttpClient の応答を処理します。
このサンプルは「Sample consuming a Rest procedure」からダウンロードできます。
この例に示すように、パラメーターは HttpRequest の本文で JSON 形式で送信されます。このため、この例では SDT に含まれるデータを JSON 形式に変換するメソッドを使用しています。
また、次の行にも特に注意してください。
&body = '{"Customer":'+ &body + '}'
GeneXus によって生成された REST プログラムではすべての入力パラメーターがラップされているため、このケースでは、上記のとおり &Body パラメーターを「Customer」キー内にラップする必要があります。
これは、特に以下のように REST サービスに複数の入力パラメーターを渡す場合に必要です。 
parm(in:&Customer, in:&Mode, out:&CustomerId, out:&Message);
REST プロトコルは有効な JSON を想定します。これは常に {フィールド:値, フィールド:値,..} の形式、配列 [ フィールド: 値, フィールド: 値 ] 、または両方の組み合わせになります。したがって、このケースでは、次のようなものを本文で送信することはできません。
{"CustomerId": 1, "CustomerName": "Paul", "CustomerBirthDate": "1977-01-18"} "INS"
これは有効な JSON ではないためです。
この場合、次のようにして送信する必要があります。
{"Customer": {"CustomerId": 1, "CustomerName": "Paul", "CustomerBirthDate": "1977-01-18"}, "Mode": "INS"}}
parm ルール内の各パラメーターはパラメーター名でラップされていることに注意してください。
 
注:
REST サービスの利用については (GeneXus で生成可能かどうかにかかわらず)、GeneXus は OpenAPI インポートツールを提供します。
 
こちらもお読みください: REST としてのプロシージャー: プロシージャーへの入力として SDT を使用する

参考情報

GeneXus の REST Web サービス







サブページ
Created: 20/12/14 21:39 by Admin Last update: 21/10/28 23:28 by Admin
カテゴリ
Powered by GXwiki 3.0