
# ModelArts在线服务处于运行中时，如何填写request header和request body？
#### 问题现象
部署在线服务完成且在线服务处于"运行中"状态时，通过ModelArts console的调用指南tab页签可以获取到推理请求的地址，但是不知道如何填写推理请求的header及body。
#### 原因分析
在线服务部署完成且服务处于运行中状态后，可以通过调用指南页签的调用地址对模型发起预测请求，出于安全考虑，ModelArts会通过相关的认证鉴权机制避免在线服务被无关人员非法调用。所以在预测请求的header信息中包含的是调用者的身份信息，在body部分是需要进行预测的内容。
header的部分需要按照华为云的相关机制进行认证，body部分需要根据模型的要求如前处理脚本的要求，如自定义镜像的要求进行输入。
#### 处理方法
- Header： 在调用指南页签上最多可以获取到两个api地址，分别是支持IAM/AKSK认证的地址以及支持APP认证的地址，对于支持不同认证方式的地址， 对header的组织也不同，具体如下：
  - IAM/AKSK认证方式：需要在header的X-Auth-Token字段上填入该租户在该Region的domain级别的Token。具体指导参见链接：[获取IAM用户Token](https://support.huaweicloud.com/api-iam/iam_30_0001.html)。
  
  - APP认证的方式：APP认证方式又可以细分为AppCode认证和APP签名认证。
    - AppCode认证需要在header的X-Apig-AppCode字段上填入绑定给该在线服务的APP的AppCode。
    
    - APP签名认证需要在header的X-Sdk-Date和Authorization字段中填入通过sdk或者工具使用该在线服务绑定的APP的AppKey和AppSecret所生产的这两个字段的值，以完成对该请求的签名认证。具体指导参见链接：[访问在线服务（APP认证）](https://support.huaweicloud.com/usermanual-standard-modelarts/inference-modelarts-0025.html)。
     
   
- Body： body的组装和模型强相关，不同来源的模型body的组装方式不同。
  - 模型为从容器镜像中导入的：需要按照自定义镜像的要求组织，请咨询该镜像的制作人。
  
  - 模型为从对象存储（OBS）导入的：此时对body的要求会在推理代码中体现，具体在推理代码的_preprocess方法中，该方法将输入的http body转换成模型期望的输入，具体的指导可以查看文档：[模型推理代码编写说明](https://support.huaweicloud.com/usermanual-standard-modelarts/inference-modelarts-0057.html)。
  
  - 模型从AI Gallery中获取的：请查看AI Gallery中的调用说明或者咨询该模型的提供方。
   
 
#### 建议与总结
无
