主要内容

RESTful APIMATLAB函数执行

MATLAB®生产服务器™用于MATLAB函数执行的RESTful API使您能够使用MATLAB数据类型和协议缓冲区的JSON表示在远程服务器上评估MATLAB函数。协议缓冲区支持仅在Java中可用金宝app®和。net客户端api。

可以编写使用MATLAB生产服务器基于web的语言(如JavaScript)中的RESTful API®并将其嵌入HTML页面。然后,您可以使用这些网页发送请求和检索响应MATLAB生产服务器实例。虽然基于web的应用程序可能更适合用JavaScript编写的客户端代码,但您可以使用任何HTTP支持的编程语言,如Java、Python、c++、. net和许多其他语言来开发客户端应用程序。金宝app

如果客户端程序从不同的域发出请求,使用JavaScript的程序员必须验证服务器上是否启用了CORS (Cross-Origin Resource Sharing)。要在服务器上启用CORS,服务器管理员必须设置相应的值cors-allowed-origins财产的main_config服务器配置文件。

RESTful API的特点

用于MATLAB函数执行的RESTful API使用HTTP请求-响应模型进行通信MATLAB生产服务器.该模型包括请求方法、响应代码、消息头和消息正文。RESTful API具有以下特点:

  • HTTP方法(post、GET和delete)构成了客户机和服务器之间通信的主要模式。

  • 唯一统一资源标识符(uri)标识服务器创建的资源。

  • 消息头传递元数据,例如内容类型的请求。

    • API支持金宝appapplication / json作为HTTP内容类型头。

    • 用于MATLAB函数执行的RESTful API也支持金宝app应用程序/ x-google-protobuf作为HTTP内容类型仅通过Java和。net客户端api。

  • 请求的消息体包含要发送到服务器的信息。

    • 如果使用JSON作为数据序列化格式,则在已部署归档文件中包含的MATLAB函数的输入将以JSON表示,并封装在消息体中。有关更多信息,请参见MATLAB数据类型的JSON表示

    • 如果您使用协议缓冲区(protobuf)进行数据序列化,那么Java和. net客户端库提供了帮助器类来基于protobuf格式在内部创建protobuf消息,并返回相应的字节数组。在请求的消息体中使用此字节数组。

  • 响应的消息体包含关于请求的信息,如状态或结果。

    如果使用protobuf进行数据序列化,Java和. net客户端库提供了反序列化protobuf响应的方法和类。

  • API同时支持服金宝app务器的同步和异步模式。

请注意

下面的示例和图形使用JSON作为数据序列化格式。

同步执行

在同步模式下,客户端发出请求后,服务器的工作进程将阻塞所有进一步的请求,直到它完成对原始请求的处理。处理完成后,worker自动返回一个响应给客户端。由于在请求处理期间阻塞的是worker,如果有其他可用的worker,服务器可以接受其他同步请求进行处理。要向服务器发出同步请求并等待响应,请使用后同步请求

下图说明了RESTful API在同步模式下是如何工作的。

当服务器以同步模式接收到请求时,它会阻塞所有其他请求,直到完成当前请求的处理。

示例:使用RESTful API和JSON同步执行Magic Square

这个例子展示了如何通过提供两个独立的实现来使用RESTful API和JSON—一个是usingJavaScript另一种用法Python®.当您执行这个示例时,服务器返回一个由25个逗号分隔的值组成的列表。这些值是已部署的MATLAB函数的输出mymagic,以列-主格式表示。的MATLAB代码mymagic函数。

函数Out = mymagic(in) Out = magic(in);结束

要运行这个示例,aMATLAB生产服务器实例包含已部署的MATLAB函数mymagic需要跑步。有关如何创建可部署归档的更多信息,请参见为MATLAB生产服务器创建可部署归档.有关设置服务器的更多信息,请参见创建服务器实例

JavaScript实现

使用RESTful API的JavaScript实现,可以将脚本包含在脚本脚本< > < / >HTML页面的标签。在web浏览器中打开此HTML页面时,服务器返回mymagic函数。注意,服务器需要有歌珥使JavaScript代码能够工作。有关如何启用的更多信息歌珥,请参阅cors-allowed-origins

下面是带有嵌入式JavaScript的示例HTML代码。

<!DOCTYPE html>   Magic Square




    

MPS RESTful API and JSON EXAMPLE

>> mymagic(5)

# output from server returned in column-major format

Python实现

本例使用Python 2.x。如果你正在使用Python 3。,则必须更改代码的某些部分。

下面是示例Python代码。

#!/usr/bin/python #使用Python 2。在Python 3中。X使用:#import http。client #conn = http.client.HTTPConnection("localhost:9910") import httplib import json conn = httplib. httpconnection ("localhost:9910") headers = {"Content-Type": "application/json"} body = json. jsondump ({"nargout": 1, "rhs": [5]}) conn.request("POST", "/ctfArchiveName/mymagic", body, headers) response = conn.getresponse() if response. dump ({"nargout": 1, "rhs": [5]})result == 200: result = json.loads(response.read()) if "lhs" in result: print(" result of magic(5) is " + str(result["lhs"][0]["mwdata"])) if "error" in result: print(" error: " + str(result["error"]["message"]))

为端到端工作流部署MATLAB函数的示例MATLAB生产服务器以及使用RESTful API和JSON调用它,参见基于web的工具使用RESTful API、JSON和JavaScript

异步执行

在异步模式下,客户机能够发布多个请求,在每种情况下,服务器都会通过创建新资源并返回对应于每个请求的唯一URI来响应。URI被封装在响应消息体中。客户端可以使用服务器返回的URI来查询和检索其他用途的结果。

异步模式的RESTful API调用如下表所示:

调用 目的
异步请求后

向服务器发出异步请求

异步请求的GET表示

查看如何表示向服务器发出的异步请求

GET请求集合

查看请求的集合

获取状态信息

获取请求的状态信息

GET请求结果

检索请求的结果

后取消请求

取消请求

删除请求

删除一个请求

下图说明了RESTful API在异步模式下的工作方式。这个图形并没有涵盖所有的RESTful API调用。有关调用的完整列表,请参见上表。

异步请求处理。

示例:使用RESTful API和JSON异步执行Magic Square

这个例子展示了如何使用RESTful API和JSON来使用JavaScript进行异步执行。当您执行这个示例时,服务器返回一个由100个逗号分隔的值组成的列表。这些值是已部署的MATLAB函数的输出mymagic,以列-主格式表示。的MATLAB代码mymagic函数。

函数Out = mymagic(in) Out = magic(in);结束

要运行这个示例,aMATLAB生产服务器实例包含已部署的MATLAB函数mymagic需要跑步。有关如何创建可部署归档的更多信息,请参见为MATLAB生产服务器创建可部署归档.有关设置服务器的更多信息,请参见创建服务器实例

下面是带有嵌入式JavaScript的示例HTML代码。

<!DOCTYPE html>   Magic Square




     

MPS RESTful API and JSON EXAMPLE

>> mymagic(5)

# output from server returned in column-major format

管理HTTP Cookie

一个MATLAB生产服务器在Azure上部署®提供一个HTTPS端点URL来调用部署到服务器的MATLAB函数。Azure应用程序网关提供基于cookie的会话关联,它使用cookie在相同的服务器上保持用户会话。在接收到来自客户端程序的请求时,应用程序网关设置set - cookie包含处理请求的服务器虚拟机(VM)信息的HTTP响应头。

异步请求的执行

使用异步请求来执行部署到服务器的MATLAB函数的客户端程序必须设置饼干的值的HTTP请求头set - cookie所有后续请求的报头。这确保处理第一个请求的服务器VM处理该会话的所有后续请求。

同步请求执行

使用同步请求来执行部署到服务器的MATLAB函数的客户端程序必须不设置饼干的值的HTTP请求头set - cookie的值必须清除饼干标题,如果它已被预先设置。这确保了同步请求是负载均衡的,同一个服务器虚拟机不会处理它们。

有关的体系结构和资源的更多信息MATLAB生产服务器在Azure上,看到Azure上的架构和资源Azure上的架构和资源

相关的话题