メインコンテンツまでスキップ
バージョン: 20 R8 BETA

OutgoingMessage

4D.OutgoingMessage クラスを使うと、アプリケーションの関数がREST リクエスト に応答して返すメッセージを作成することができます。 レスポンスが4D.OutgoingMessage 型であった場合、REST サーバーはオブジェクトを返すのではなく、OutgoingMessage クラスのオブジェクトインスタンスを返します。

通常、このクラスは、カスタムのHTTP リクエストハンドラー関数 またはHTTP GET リクエストを管理するようにデザインされた、onHttpGet キーワードで宣言された関数内で使用することができます。 このようなリクエストは、例えば、ファイルのダウンロード、画像の生成、ダウンロードなどの機能を実装するためや、ブラウザを介して任意のコンテンツタイプを受信するために使用されます。

このクラスのインスタンスは4D Server 上にビルドされ、4D REST サーバー によってのみブラウザに送信することができます。 このクラスを使用することで、HTTP 以外のテクノロジー(例: モバイルなど)を使用することができます。 このクラスを使用することで、HTTP 以外のテクノロジー(例: モバイルなど)を使用することができます。

履歴
リリース内容
20 R7クラスを追加

例題

この例題では、getFile() 関数はDatastore クラス に実装されており、REST リクエストによって呼び出すことができます。 ここでの目的は、testFile.pdf ファイルをリクエストへのレスポンスとして返すことです: ここでの目的は、testFile.pdf ファイルをリクエストへのレスポンスとして返すことです:

Class extends DataStoreImplementation

exposed onHTTPGet Function getFile() : 4D.OutgoingMessage

var $result:=4D.OutgoingMessage.new()
var $file:=File("/RESOURCES/testFile.pdf")

$result.setBody($file.getContent()) // これはバイナリーのコンテンツ
$result.setHeader("Content-Type"; "application/pdf")
return $result

OutgoingMessage Object

4D.OutgoingMessage オブジェクトは以下のプロパティと関数を提供します:

body : any
送信されるメッセージ本文
headers : Object
送信されるメッセージのカレントのヘッダーがキー/値のペアとして格納されてます
.setBody( body : any )
body 引数をメッセージの本文として設定します
.setHeader( key : Text ; value : Text )
送信するメッセージのヘッダーの、key 引数で指定したキーを、value 引数で指定した値で設定します
.setStatus( status : Integer )
status 引数で与えられたステータスをstatus プロパティに設定します
status : Integer
送信メッセージのカレントのステータス

4D.OutgoingMessage オブジェクトは共有不可 オブジェクトです。

.body

body : any

説明

.body プロパティには送信されるメッセージ本文が格納されています。 .body プロパティでは以下のデータ型がサポートされます:

  • テキスト
  • blob
  • object
  • image

.body プロパティは読み書き可能です。

.body プロパティはまた、setBody() 関数を使用しても設定することができます。この場合、content-type ヘッダーは自動的に設定されます。

.headers

headers : Object

説明

.headers プロパティには送信されるメッセージのカレントのヘッダーがキー/値のペアとして格納されてます。

.headers プロパティは、読み出し専用です。 ヘッダーを設定するには、setHeader() 関数を使用します。

.setBody()

.setBody( body : any )

引数説明
bodyany->送信メッセージの本文

説明

.setBody() 関数は、body 引数をメッセージの本文として設定します。

body 引数では以下のデータ型がサポートされています:

  • Text
  • BLOB
  • Object
  • ピクチャー

この関数が使用された場合、content-type ヘッダーはbody 引数の型に応じて自動的に設定されます:

  • Content-Type: 本文がテキストの場合にはtext/plain
  • Content-Type: 本文がBlob の場合にはapplication/octet-stream
  • Content-Type: 本文がオブジェクトの場合にはapplication/json
  • Content-Type: image/jpeg、image/gif... (本文が画像の場合)

body がサポートされていない値の型だった場合、エラーが返されます。

.setHeader()

.setHeader( key : Text ; value : Text )

引数説明
keyText->設定するヘッダープロパティ
valueText->ヘッダープロパティの値

説明

.setHeader() 関数は、送信するメッセージのヘッダーの、key 引数で指定したキーを、value 引数で指定した値で設定します。 両方の引数ともテキスト値でない場合、エラーが発生します。

4D.OutgoingMessage オブジェクトのインスタンスを返すとき、4D は一部のヘッダーを自動的に設定します(例: Set-CookieWASID4D=... および 4DSID__ProjectName_=.... に設定)。

value 引数の値を、key 引数で"Content-Type" ヘッダーを指定して設定しようとする場合、この関数を、setBody() の後に呼び出すようにして下さい。setBody() は自動的にヘッダーに値を入れるからです。 "Content-Type" ヘッダーの値の一覧については、のWEB SEND BLOB ドキュメンテーションを参照して下さい。

.setStatus()

.setStatus( status : Integer )

引数説明
statusInteger->設定するステータス

説明

.setStatus() 関数は、status 引数で与えられたステータスをstatus プロパティに設定します。

status が整数値でない場合、エラーが発生します。

HTTP ステータスコードの一覧については、Wikipedia のHTTP ステータスコードの一覧(英文) のページを参照して下さい。

.status

status : Integer

説明

.status プロパティには、送信メッセージのカレントのステータスが格納されています。 このプロパティは、setStatus() 関数を使用して設定することができます。