## RESTful 接口使用说明
`Linux` `Ascend` `Serving` `初级` `中级` `高级`
- [RESTful 接口使用说明](#restful-接口使用说明)
- [概述](#概述)
- [请求方式](#请求方式)
- [请求输入格式](#请求输入格式)
- [支持的类型总结如下:](#支持的类型总结如下)
- [请求应答格式](#请求应答格式)
## 概述
MindSpore Serving支持`GPRC`和`RESTful`两种请求方式。本章节介绍`RESTful`类型请求。
部署`Serving`参考[快速入门](https://gitee.com/mindspore/serving/blob/master/README_CN.md#快速入门) 章节。
与通过`master.start_grpc_server("127.0.0.1", 5500)`启动`GRPC`服务不同的是,`RESTful`服务需要通过`master.start_restful_server("0.0.0.0", 1500)`来启动。
### 请求方式
当前支持`POST`类型的RESTful请求,请求格式如下:
```
POST http://${HOST}:${PORT}/model/${MODLE_NAME}[/version/${VERSION}]:${METHOD_NAME}
```
其中:
- `HOST`:指定访问的IP地址;
- `PORT`:指定访问的端口号;
- `MODEL_NAME`:请求的模型名称;
- `VERSION`:表示版本号。版本号是可选的,若未指定具体版本号,则默认使用模型的最新版本。
- `METHOD_NAME`:表示请求模型的具体方法名称。
如果使用`curl`工具,RESTful请求方式如下:
```
curl -X POST -d '${REQ_JSON_MESSAGE}' http://${HOST}:${PORT}/model/${MODLE_NAME}[/version/${VERSION}]:${METHOD_NAME}
```
例子:请求`lenet`模型的`predict`方法进行数字图片的推理,请求如下:
```
curl -X POST -d '{"instances":{"image":{"b64":"babe64-encoded-string"}' http://127.0.0.1:1500/model/lenet/version/1:predict
```
其中:`babe64-encoded-string`是数字`1`图片经过`base64`编码之后的字符串。由于字符串比较长,不显式列出。
### 请求输入格式
RESTful支持`Json`请求格式,`key`固定为`instances`,`value`:表示多个实例。
每个实例通过`key-value`格式的`Json`表示。其中:
- `key`:表示输入名称,需要与请求模型提供的方法的输入参数名称一致,若不一致,则请求失败。
- `value`:表示具体的值。当前支持的`value`类型:
- 标量:`str`、`bytes`、`int`、`float`、`bool`;
`bytes`:通过`base64`编码方式支持。
- 张量:`int`、`float`、`bool`。
张量通过数组格式表示数据和维度信息。
`Json`中支持的`int`类型:是`int32`表示的范围,`float`类型:是`float32`表示的范围。
请求格式:
```
{
"instances":[
{
"input_name1":||