このドキュメントでは、GeneXus で REST Web サービスとして公開されている
ビジネスコンポーネントを使用して新しいデータを挿入する方法について説明します。
最初に、基本的な手引きを示します:
HttpClient データタイプを使用します。
新しいデータの挿入に使用する HTTP メソッドは HTTP POST メソッドです。
ビジネスコンポーネントを使用して新しいデータを挿入する際のパラメーターはすべて (主キーのパラメーターを除き) HTTP リクエストの本文に含める必要があります。メッセージの本文は JSON 形式にし、HTTP GET を実行したときに返されるのと同じビジネスコンポーネント構造が含まれていなければなりません。
適切な形式で本文を組み立てる最も簡単な方法は、ビジネスコンポーネントの構造に基づく
Structured Data Type (SDT) オブジェクトを定義し、メソッドを使用して有効な JSON 文字列に設定する方法です。
サービスに対する POST を実行する前に、この JSON 文字列を HTTP リクエストの本文に追加する必要があります。
<サーバーの URI>/rest/<モジュール>/<BC 名>/<パラメーター 1>,<パラメーター 2>,..,<パラメーター N>
入力値の説明:
<パラメーター 1>,<パラメーター 2>,..,<パラメーター N>
複合主キーです。
主キーが自動ナンバリングされる場合は、URL で 0 を使用します。
次の図に示すように、REST Web サービスとして公開されている Product ビジネスコンポーネントのトランザクションを想定します:
この例では、ProductId が 5 の新しい Product を挿入します。
次の図に示すように、Product 構造に基づく ProductSDT 構造化データタイプを定義しました:
コードは次のようになります:
&httpclient.Host= &server
&httpclient.Port = &port
&httpclient.BaseUrl = &urlbase
&productSDT.ProductName = "Samsung Galaxy"
&productSDT.ProductPrice = 22
&httpclient.AddString(&productSDT.ToJson())
&httpclient.AddHeader('content-type','application/json')
&httpclient.Execute('POST','Product/5')
if &httpclient.StatusCode = 201
msg("Data successfully added")
else
msg("There was an error retrieving the data: " + &httpclient.StatusCode.ToString())
endif
このサンプルは「
File:Sample insert data using a Rest BC」からダウンロードできます。
注:
- 'content-type:application/json' ヘッダーの追加を忘れないようにします。
- 複数のパラメーターを URL で渡す場合は (複合主キー)、コンマで区切る必要があります。
- サービス URI が http://localhost/TestRESTFullGX.NetEnvironment/rest/Product の場合、ベース URL は次のようになります: /TestRESTFullGX.NetEnvironment/rest/
- 呼び出し後、エラー処理を管理するために、HTTP ステータスコードのクエリが行われます。
GeneXus の REST Web サービスとしてのビジネスコンポーネント