@RequestParam
可以有多个参数,使用时直接在url后面加参数或者使用请求参数
代码段:
// RequestParam。在Uri后面接参数或使用请求参数
@PostMapping("/queryByUnitId")
public UnitInfo queryByUnitId(@RequestParam("unitId") String unitId) {
UnitInfo unitInfo = queryApi.queryUnitInfoByUnitId(unitId);
return unitInfo;
}
调用方式(jmeter)
1、uri后面加参数
http://10.18.31.34:8002/queryByUnitId?unitId=dcn1
报文头Content-Type无论写 application/json还是application/x-www-form-urlencoded(不指定Content-Type默认值就是这个),都对请求的结果没有影响
2、使用请求参数
此时Content-Type必须是application/x-www-form-urlencoded(可以不指定使用默认值),如果是application/json,是无法调用的。
jmeter提供了两种方式,分别是parameter和body data,效果是一样的
请求结果
如果指定Content-Type=application/json,是无法识别到请求参数的
请求返回:
{"timestamp":"2021-08-26T02:31:29.589+0000","status":400,"error":"Bad Request","message":"Required String parameter 'unitId' is not present","path":"/queryByUnitId"}
@RequestBody
RequestBody要求请求体必须是json格式的,且一个请求只能有一个RequestBody
举例段:
使用JSONObject提供的get方法取得传入json报文中对应的key的内容
@PostMapping("/queryByUnitId")
public UnitInfo queryByUnitId1(@RequestBody JSONObject jo) {
UnitInfo unitInfo = queryApi.queryUnitInfoByUnitId((String) jo.get("unitId"));
// 下面这行的效果同上
// UnitInfo unitInfo = queryApi.queryUnitInfoByUnitId(jo.getString("unitId"));
return unitInfo;
}
调用方式(jmeter)