OutgoingMessage
4D.OutgoingMessage クラスを使うと、アプリケーションの関数がREST リクエスト に応答して返すメッセージを作成することができます。 レスポンスが4D.OutgoingMessage 型であった場合、REST サーバーはオブジェクトを返すのではなく、OutgoingMessage クラスのオブジェクトインスタンスを返します。
通常、このクラスは、カスタムのHTTP リクエストハンドラー関数 またはHTTP GET リクエストを管理するようにデザインされた、onHTTPGet キーワードで宣言された関数内で使用することができます。 このようなリクエストは、例えば、ファイルのダウンロード、画像の生成、ダウンロードなどの機能を実装するためや、ブラウザを介して任意のコンテンツタイプを受信するために使用されます。
このクラスのインスタンスは4D Server 上にビルドされ、4D REST サーバー によってのみブラウザに送信することができます。 このクラスを使用することで、HTTP 以外のテクノロジー(例: モバイルなど)を使用することができます。
履歴
| リリース | 内容 |
|---|---|
| 20 R7 | クラスを追加 |
例題
この例題では、getFile() 関数はDatastore クラス に実装されており、REST リクエストによって呼び出すことができます。 ここでの目的は、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 プロパティでは以下のデータ型がサポートされます:
- text
- blob
- object
- image
.body プロパティは読み書き可能です。
.body プロパティはまた、setBody() 関数を使用しても設定することができます。この場合、content-type ヘッダーは自動的に設定されます。
.headers
headers : Object
説明
.headers プロパティには送信されるメッセージのカレントのヘッダーがキー/値のペアとして格納されてます。
.headers プロパティは、読み出し専用です。 ヘッダーを設定するには、setHeader() 関数を使用します。
.setBody()
.setBody( body : any )
| 引数 | 型 | 説明 | |
|---|---|---|---|
| body | any | -> | 送信メッセージの本文 |
説明
.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 )
| 引数 | 型 | 説明 | |
|---|---|---|---|
| key | Text | -> | 設定するヘッダープロパティ |
| value | Text | -> | ヘッダープロパティの値 |
説明
.setHeader() 関数は、送信するメッセージのヘッダーの、key 引数で指定したキーを、value 引数で指定した値で設定します。 両方の引数ともテキスト値でない場合、エラーが発生します。
When returning a 4D.OutgoingMessage object instance, 4D automatically sets some headers (e.g. Set-Cookie with 4DSID__ProjectName_=....).4D.OutgoingMessage オブジェクトインスタンスを返す場合、4D は自動的に一部のヘッダーを自動的に設定します(例: Set-Cookie を 4DSID__ProjectName_=.... で設定するなど)。
value 引数の値を、key 引数で"Content-Type" ヘッダーを指定して設定しようとする場合、この関数を、setBody() の後に呼び出すようにして下さい。setBody() は自動的にヘッダーに値を入れるからです。 "Content-Type" ヘッダーの値の一覧については、のWEB SEND BLOB ドキュメンテーションを参照して下さい。
.setStatus()
.setStatus( status : Integer )
| 引数 | 型 | 説明 | |
|---|---|---|---|
| status | Integer | -> | 設定するステータス |
説明
.setStatus() 関数は、status 引数で与えられたステータスをstatus プロパティに設定します。
status が整数値でない場合、エラーが発生します。
HTTP ステータスコードの一覧については、Wikipedia のHTTP ステータスコードの一覧(英文) のページを参照して下さい。
.status
status : Integer
説明
.status プロパティには、送信メッセージのカレントのステータスが格納されています。 このプロパティは、setStatus() 関数を使用して設定することができます。