POST Asynchronous Request
向服务器发起异步请求
描述
使用 POST 方法向服务器发出异步请求。在异步执行期间,此步骤通常是流程中的第一步。
以下部分使用 JSON 作为数据序列化格式。有关如何将 protobuf 用作 Java® 客户端 API 和 .NET 客户端 API 的数据序列化格式的示例,请参阅 在 Java 客户端中使用协议缓冲区进行异步 RESTful 请求 和 在 .NET 客户端中使用协议缓冲区进行异步 RESTful 请求。
请求
HTTP 方法
POST
URI
http://host:port/deployedArchiveName/matlabFunctionName
查询参数
| 名称 | 描述 | 值类型 |
|---|---|---|
mode | (必需)。指定通信方式。 |
|
client | (可选)。指定发出请求的客户端的 ID 或名称。 |
|
示例:
?mode=async&client=Nor101
Content-Type
application/json
主体
| 名称 | 描述 | 值类型 |
|---|---|---|
nargout | 客户端应用程序从已部署的 MATLAB® 函数请求的输出数量。请注意,MATLAB 函数可以根据其预期用途进行编码以返回多个输出。您可以使用 | number |
rhs | 已部署的 MATLAB 函数的输入参量,指定为逗号分隔值的数组。 | [arg1,arg2,arg3,...] |
outputFormat | 指定响应中的 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" }
}响应
成功
201 Created
| 名称 | 描述 | 值类型 |
|---|---|---|
id | 特定请求的 ID。 | {id-string} |
self | 特定请求的 URI。 在其他异步执行请求中使用 URI,例如检索请求的状态或请求的结果。 | {request-uri-string} |
up | 用于查看服务器上的请求集合的 URI。有关详细信息,请参阅GET Collection of Requests。 | {request-collection-uri-string} |
lastModifiedSeq | 表示 self 所代表的请求的最后修改时间的数字。 | {server-state-number} |
state | 请求的状态。 |
状态列表: READING IN_QUEUE PROCESSING READY ERROR CANCELLED |
client | 发起请求时作为查询参数指定的客户端 ID 或名称。 | {client-id-string} |
示例:
{
"id": "a061c723-4724-42a0-b405-329cb8c373d6",
"self": "/~e4a954fd-5eaf-4b54-aac2-20681b33d075/requests/a061c723-4724-42a0-b405-329cb8c373d6",
"up": "/~e4a954fd-5eaf-4b54-aac2-20681b33d075/requests",
"lastModifiedSeq": 6,
"state": "READING",
"client": ""
} |
错误
404 ResourceNotFound
405 MethodNotAllowed - 没有 'Access-Control-Allow-Origin' 标头。请在服务器上启用 CORS。
415 InvalidContentType
415 UnsupportedMediaType
示例调用
HTTP
请求: POST /mymagic/mymagic?mode=async HTTP/1.1
Host: localhost:9910
Content-Type: application/json
{"rhs":[7],"nargout":1,"outputFormat":{"mode":"small","nanType":"string"}}响应: Status Code: 201 Created
Header:
Location: /~e4a954fd-5eaf-4b54-aac2-20681b33d075/requests/ad2363f3-26c1-4d48-88f8-6b7fb615f254
X-MPS-Start-Time: 003472d705bd1cd2
Content-Length: 248
Body:
{
"id": "ad2363f3-26c1-4d48-88f8-6b7fb615f254",
"self": "/~e4a954fd-5eaf-4b54-aac2-20681b33d075/requests/ad2363f3-26c1-4d48-88f8-6b7fb615f254",
"up": "/~e4a954fd-5eaf-4b54-aac2-20681b33d075/requests",
"lastModifiedSeq": 41,
"state": "READING",
"client": ""
} |
JavaScript
var data = JSON.stringify(
{ "rhs": [7],
"nargout": 1,
"outputFormat": {"mode": "small","nanType": "string"}
}
);
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://localhost:9910/mymagic/mymagic?mode=async");
xhr.setRequestHeader("content-type", "application/json");
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.send(data); |
版本历史记录
在 R2016b 中推出