主要内容

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

POST Asynchronous Request

向服务器发起异步请求

描述

使用 POST 方法向服务器发出异步请求。在异步执行期间,此步骤通常是流程中的第一步。

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

请求

HTTP 方法

POST

URI

http://host:port/deployedArchiveName/matlabFunctionName

查询参数

名称描述值类型
mode

(必需)。指定通信方式。

async

client

(可选)。指定发出请求的客户端的 ID 或名称。

{client-id-string}

示例

?mode=async&client=Nor101

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 状态代码

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请求的状态。

{request-state-string}

状态列表:

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": ""
}

错误

HTTP 状态代码

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 中推出