MDriven中REST请求Header构造及POST请求建模故障排查咨询
在MDriven中建模REST POST请求及请求头构造指南
针对你提供的jQuery REST请求,我来帮你拆解验证ViewModel建模,并说明MDriven中请求头的构造方法:
一、先明确原始jQuery请求的核心细节
首先把你的原始请求代码标出来方便对比:
jQuery.ajax({ type: 'POST', url: 'http://server.net/api/server/search.php', data: { 'apikey': xxxxxx, 'apiversion': '3', 'action': "search", 'type':'near', 'lat':'59.91673', 'long': '10.74782', 'distance': '2000', 'limit': '10' }, success: printJsonResponse, dataType: 'json' });
这个请求的关键特征:
- 请求方法:
POST - 参数传递方式:Form Data(
application/x-www-form-urlencoded)(jQuery发送对象格式data时的默认编码) - 期望响应:JSON格式
- 所有参数均为字符串类型(注意
apiversion、limit等都是带引号的字符串,不是数字)
二、验证你的ViewModel建模是否匹配
如果你的建模无法正常工作,大概率是以下几个细节没对应上,你可以逐一核对:
1. 基本请求配置
确保ViewModel的核心设置和原始请求一致:
HttpMethod:必须设为POSTUri:完全匹配http://server.net/api/server/search.phpResponseType:设为Json(对应jQuery的dataType: 'json')
2. 参数配置(最容易出错的点)
原始请求是Form Data格式,所以ViewModel的参数必须设置为表单参数,而不是JSON请求体:
- 每个参数名称必须和原始请求完全一致(大小写敏感!比如
lat不能写成Lat,long不能写成Long) - 参数类型全部设为
字符串(哪怕是数字类的值,原始请求里也是字符串格式,API可能会拒绝类型不匹配的参数) - 在MDriven的参数来源设置里,选择
Form(如果选Body会把参数序列化成JSON发送,和原始请求完全不符) - 可以给固定值的参数设置默认值(比如
apiversion设为'3',action设为'search')
3. 常见排查点
如果建模后还是失败,建议:
- 用MDriven的REST调试工具查看实际发送的请求内容,对比原始请求的参数、编码格式是否一致
- 检查API端的错误日志,看是否有参数缺失、类型错误或格式不兼容的提示
三、MDriven中构造REST请求头的方法
MDriven提供了三种方式来配置请求头,满足不同场景需求:
1. 静态固定头(ViewModel层面)
如果请求头的值是固定的,可以直接在ViewModel的Headers集合里添加键值对:
- 比如为了明确指定内容类型(虽然POST Form时MDriven会自动处理,但可以手动确保):添加键
Content-Type,值application/x-www-form-urlencoded - 比如添加接受JSON响应的头:键
Accept,值application/json
2. 动态生成头(运行时赋值)
如果头的值需要动态获取(比如动态生成的API token、用户会话信息),可以用MDriven的表达式语言动态注入:
- 在Header的值输入框中,使用表达式格式(比如
=CurrentUser.APIToken)来引用运行时的变量或属性
3. 全局默认头(多请求共用)
如果多个REST调用需要共用一些头(比如统一的Authorization头),可以在MDriven的全局REST客户端配置里添加默认头,这样所有使用该客户端的ViewModel都会自动带上这些头,无需逐个设置
示例ViewModel配置参考
给你一个符合原始请求的ViewModel配置模板:
- 基础设置:
- HttpMethod: POST
- Uri: http://server.net/api/server/search.php
- ResponseType: Json
- 表单参数:
- apikey:字符串类型,Form参数
- apiversion:字符串类型,Form参数,默认值
'3' - action:字符串类型,Form参数,默认值
'search' - type:字符串类型,Form参数,默认值
'near' - lat:字符串类型,Form参数
- long:字符串类型,Form参数
- distance:字符串类型,Form参数
- limit:字符串类型,Form参数,默认值
'10'
- 请求头(可选):
- Content-Type: application/x-www-form-urlencoded
- Accept: application/json
内容的提问来源于stack exchange,提问作者Henrik Leijonhufvud
相关产品推荐
相关产品推荐

