Main Content

POST Synchronous Request

サーバーに同期リクエストを行ってレスポンスを待つ

説明

POST メソッドを使用してサーバーに対して同期リクエストを行います。同期モードでは、サーバーがリクエストを受信すると、元のリクエストの処理を完了するまで、サーバー上のワーカー プロセスがそれ以降のリクエストをすべてブロックします。処理が完了すると、ワーカーは自動的にクライアントにレスポンスを返します。サーバーからレスポンスを取得するために他の HTTP メソッドは必要ありません。

サーバーは、使用可能なワーカーの数と同数の同期リクエストを同時に実行できます。

以下のセクションでは、JSON をデータ シリアル化形式として使用します。Java® クライアント API で protobuf をデータ シリアル化形式として使用する方法を説明する例については、Synchronous RESTful Requests Using Protocol Buffers in the Java Clientを参照してください。.NET クライアント API で protobuf をデータ シリアル化形式として使用する方法を説明する例については、Synchronous RESTful Requests Using Protocol Buffers in .NET Clientを参照してください。

リクエスト

HTTP メソッド

POST

URI

http://host:port/deployedArchiveName/matlabFunctionName

クエリ パラメーター

なし。

コンテンツ タイプ

  • application/json

本文

名前説明値のタイプ
nargout

クライアント アプリケーションが、デプロイされた MATLAB® 関数からリクエストしている出力の数。意図された目的に応じて、複数の出力を返すように MATLAB 関数をコーディングできます。nargout を使用して、潜在的な出力のサブセットを指定できます。

number
rhs

デプロイされた MATLAB 関数の入力引数。コンマ区切り値の配列として指定します。

[arg1,arg2,arg3,...]
outputFormat

レスポンス内の MATLAB 出力を詳細の JSON 表現または簡易の JSON 表現のいずれを使用して返す必要があるのか、および NaNInf を JSON 文字列または JSON オブジェクトのいずれとして表現する必要があるのかを指定します。mode が指定されていない場合や、返される MATLAB データ型が JSON 簡易表現をサポートしていない場合、レスポンスは JSON 詳細表現を使用して表現されます。

MATLAB データ型の JSON 表現の詳細については、MATLAB データ型の JSON 表現を参照してください。

{ "mode" : "small | large", "nanInfFormat" : "string | object" }

:

単一の入力引数:

{
 "nargout": 1, 
 "rhs": [5],
 "outputFormat": { "mode" : "small", "nanInfFormat" : "object" }
}
複数の入力引数:
{
 "nargout": 2, 
 "rhs": [3, 4, 5 ...],
 "outputFormat": { "mode" : "large", "nanInfFormat" : "string" }
}

レスポンス

成功

HTTP ステータス コード

200 OK

本文

名前説明値のタイプ
lhs

サーバーからのレスポンスに含まれる JSON array。JSON array の各要素は、JSON 表現を使用して表されている、デプロイされた MATLAB 関数の出力に対応しています。JSON 表現の詳細については、MATLAB データ型の JSON 表現を参照してください。

[output1, output2, ...]

:

{
"lhs":[[[17,24,1,8,15],[23,5,7,14,16],[4,6,13,20,22],[10,12,19,21,3],[11,18,25,2,9]]]
}

エラー

HTTP ステータス コード

400 InvalidJSON

404 FunctionNotFound

404 ComponentNotFound

サンプル呼び出し

HTTP

リクエスト:

POST /mymagic/mymagic HTTP/1.1
Host: localhost:9910 
Content-Type: application/json

{"rhs":[5],"nargout":1,"outputFormat":{"mode":"small","nanType":"string"}}

レスポンス:

Status Code: 200 OK
{
"lhs":[[[17,24,1,8,15],[23,5,7,14,16],[4,6,13,20,22],[10,12,19,21,3],[11,18,25,2,9]]]
}

JavaScript

var data = JSON.stringify({
    "rhs": [5],
    "nargout": 1,
    "outputFormat": {"mode": "small", "nanType": "string"}
});
var xhr = new XMLHttpRequest();
xhr.addEventListener("readystatechange", function () {
    if (this.readyState === 4) {
        console.log(this.responseText);
    }
});
xhr.open("POST", "http://localhost:9910/mymagic/mymagic");
xhr.setRequestHeader("content-type", "application/json");
xhr.send(data);

バージョン履歴

R2016a で導入