主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

POST Synchronous Request

向服务器发起同步请求,并等待响应

描述

使用 POST 方法向服务器发出同步请求。在同步模式下,服务器收到请求后,服务器上的工作进程进程模块所有进一步的请求,直到完成对原始请求的处理。处理完成后,工作进程会自动向客户端返回响应。不需要其他 HTTP 方法来从服务器检索响应。

服务器可以同时执行与可用工作进程数量一样多的同步请求。

以下部分使用 JSON 作为数据序列化格式。有关如何使用 protobuf 作为 Java® 客户端 API 的数据序列化格式的示例,请参阅 在 Java 客户端中使用协议缓冲区同步 RESTful 请求,如何使用 .NET 客户端 API 的数据序列化格式,请参阅 在 .NET 客户端中使用协议缓冲区同步 RESTful 请求

请求

HTTP 方法

POST

URI

http://host:port/deployedArchiveName/matlabFunctionName

查询参数

无。

Content-Type

  • application/json

主体

名称描述值类型
nargout

客户端应用程序从已部署的 MATLAB® 函数请求的输出数量。请注意,MATLAB 函数可以根据其预期用途进行编码以返回多个输出。可以使用 nargout 指定这些潜在输出的子集。

number
rhs

已部署的 MATLAB 函数的输入参量,指定为逗号分隔值的数组。

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

指定响应中的 MATLAB 输出是否应使用大 JSON 表示法或小 JSON 表示法返回,以及 NaNInf 是否应表示为 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 中推出