Call User-Defined Function with MATLAB REST Function Services
A MATLAB® REST function service enables you to evaluate your own MATLAB functions, classes, or scripts, on local or remote servers using JSON representation of MATLAB data types. You can use any HTTPS supported programming language such as Java®, Python®, C++, or .NET to develop client applications.
Create Service to Call mySqrt.m
This example shows how to configure your application to call a MATLAB function that calculates a square root. Do not directly call the
MATLAB
sqrt
function. Instead, create this function, save it to a file
named mySqrt.m
, and add it to the MATLAB path:
function result = mySqrt(x) result = sqrt(x); end
Create a service TestService
to call mySqrt
from your application.
myService = restFunctionService("TestService","mySqrt");
Start Service
Create a ClientRequestInfo
object which contains the information
your application needs to make RESTful calls.
info = myService.start
info = ClientRequestInfo with properties: ClientAccessMode: local RequestUrl: "https://localhost:9920/matlab/feval/v1/TestService" CertificateLocation: "C:\Users\<username>\AppData\Roaming\MathWorks\restfcnconnector\publickey.pem" RESTPersonalAccessToken: "6tHdZuiIB3y8YaQmj7cCX1GNcl/cd+clpuaS7/TIJmE="
Set Up Call from Client Program
In your application, create a request using the POST method. Use the data from
your ClientRequestInfo
object to complete these arguments in the
request:
URL — Set the URL value to the RequestUrl property with the function name appended. Do not include the .m file extension. For this example, the value is:
https://localhost:9920/matlab/feval/v1/TestService/mySqrt
Add a
mwRESTPersonalAccessToken
header field — Set the value to the RESTPersonalAccessToken property.Content-type
header field — Set toapplication/json
.Path to certificate — Set to the CertificateLocation property value.
Message body — Create a JSON message body with the required arguments for the function:
{ "rhs": [input-argument(s)], "nargout": number-of-output-arguments, "outputFormat": { "mode": "small", "nanType": "string" } }
To call
res = mySqrt(25)
in this example, set the body to:{ "rhs": [25.0], "nargout": 1, "outputFormat": { "mode": "small", "nanType": "string" } }
Sample HTTP Request Code
Your request contains the URL, the
mwRESTPersonalAccessToken
header field, and the message
body, and should look like this code:
POST /matlab/feval/v1/TestService/mySqrt HTTP/1.1 Host: localhost:9920 mwRESTPersonalAccessToken: VAAKeo/2MaCzb72rMv1TX0df/HbjSSL47kWy5B694BE= Content-Type: application/json Content-Length: 80 {"rhs":[25.0], "nargout":1, "outputFormat":{"mode":"small", "nanType":"string"}}
Set the path to the certificate using the POST method in your application. Refer to your application documentation for details about calling the POST method.
Note
If either the request or the response has a message body whose size is greater than 7 MB, MATLAB will raise an error. Consider breaking the data into smaller chunks that can be contained by multiple requests or responses.