主要内容

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)。要在服务器上启用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客户端库提供了helper类来在内部创建基于proto格式的protobuf消息,并返回相应的字节数组。在请求的消息体中使用此字节数组。

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

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

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

请注意

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

同步执行

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

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

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

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

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

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

要运行此示例,请使用MATLAB制作服务器实例,包含已部署的MATLAB函数mymagic需要跑步。有关如何创建可部署归档的详细信息,请参见为MATLAB生产服务器创建可部署存档.有关设置服务器的详细信息,请参见使用命令行创建服务器实例

JavaScript实现

使用RESTful API的JavaScript实现,可以将脚本包含在脚本脚本< > < / >HTML页面的标签。的值时,服务器将返回此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。X,您必须更改代码的某些部分。

下面是示例Python代码。

# !本例使用Python 2。在Python 3. x#。X使用:#导入http。客户端#conn = http.client.HTTPConnection("localhost:9910") import httpplib import json conn = httpplib . httpconnection ("localhost:9910") headers = {"Content-Type": "application/json"} body = json. httpconnection ("localhost:9910")dump ({"nargout": 1, "rhs": [5]}) conn.request("POST", "/ctfArchiveName/mymagic", body, headers) response = conn.getresponse()如果响应。status == 200: result = json.loads(response.read()) if "lhs" in result: print(" result of magic(5) is " + str(result["lhs"][0]["mwdata"])) elif "error" in result: print(" error: " + str(result["error"]["message"])))

对于将MATLAB函数部署到的端到端工作流示例MATLAB制作服务器并使用RESTful API和JSON调用它,参见基于web的工具使用RESTful API, JSON和JavaScript

异步执行

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

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

调用 目的
POST异步请求

向服务器发出异步请求

异步请求的表示

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

GET请求集合

查看请求的集合

获取状态信息

获取请求的状态信息

GET请求结果

检索请求的结果

POST取消请求

取消请求

删除请求

删除请求

下图说明了RESTful API如何在异步模式下工作。该图没有涵盖所有RESTful API调用。完整的调用列表请参见上表。

异步请求处理。

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

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

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

要运行此示例,请使用MATLAB制作服务器实例,包含已部署的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 - cookieHTTP响应头,其中包含有关处理请求的服务器虚拟机(VM)的信息。

异步请求执行

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

同步请求执行

使用同步请求执行部署到服务器的MATLAB函数的客户端程序不能设置饼干的值作为HTTP请求头set - cookie的值,并且必须清除饼干头,如果它已预先设置。这确保了同步请求是负载平衡的,并且同一服务器VM不会处理它们。

的体系结构和资源的详细信息MATLAB制作服务器在Azure上,请参阅Azure上的体系结构和资源Azure上的体系结构和资源

相关的话题