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

OutGoingMessage

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

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

このクラアスのインスタンスは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 objects provide the following properties and functions:

body : any
the outgoing message body
headers : Object
the current headers of the outgoing message as key/value pairs
.setBody( body : any )
sets the outgoing message body
.setHeader( key : Text ; value : Text )
sets the outgoing message header key with the provided value
.setStatus( status : Integer )
sets the status property with the given status
status : Integer
the current status of the outgoing message

A 4D.OutGoingMessage object is a non-sharable object.

.body

body : any

説明

The .body property contains the outgoing message body. The following data types are supported in the .body property:

  • text
  • blob
  • object
  • image

The .body property is read-write.

You can also set the .body property using the setBody() function, in which case the content-type header is automatically set.

.headers

headers : Object

説明

The .headers property contains the current headers of the outgoing message as key/value pairs.

The .headers property is read-only. To set a header, use the setHeader() function.

.setBody()

.setBody( body : any )

引数説明
bodyany->Body of the outgoing message

説明

The .setBody() function sets the outgoing message body.

The following data types are supported in the body:

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

When this function is used, the content-type header is automatically set depending on the body type:

  • Content-Type:text/plain if the body is a Text
  • Content-Type:application/octet-stream if body is a Blob
  • Content-Type:application/json if body is an Object
  • Content-Type:image/jpeg, image/gif... if body is an Image

If body is not of a supported value type, an error is returned.

.setHeader()

.setHeader( key : Text ; value : Text )

引数説明
keyText->Header property to set
valueText->Value of the header property

説明

The .setHeader() function sets the outgoing message header key with the provided value. If both parameters are not Text values, an error is raised.

When returning a 4D.OutGoingMessage object instance, 4D automatically sets some headers (e.g. Set-Cookie with WASID4D=... and 4DSID__ProjectName_=....).

If you set a value for the "Content-Type" header key, make sure you call this function after the call to setBody(), because setBody() automatically fills this header. For a list of "Content-Type" header values, please refer to the WEB SEND BLOB documentation.

.setStatus()

.setStatus( status : Integer )

引数説明
statusInteger->Status to set

説明

The .setStatus() function sets the status property with the given status.

If status is not an integer value, an error is raised.

For a list of HTTP status codes, please refer the HTTP status code list on Wikipedia.

.status

status : Integer

説明

The .status property contains the current status of the outgoing message. This property can be set using the setStatus() function.