赞
踩
在使用REST接口的时候,需要传递多个参数,遵循REST的请求方式,查询数据用GET的请求方式。
如果仅仅是为了读取资源,当所需参数较多时,URL传递参数不太美观,放在body中进行传递更好。
而需要使用 Body 发送一大批数据时,改用 POST 请求却与 RESTFul 的 POST 语义不相符。这时候或许可以 GET + BODY, 但是不能对该请求以 URI 作为 Key 进行缓存了。
查询得知,Apache Http Client 和 OkHttpClient 都不支持 GET 请求发送 Body 数据,而 AsyncHttpClient 是可以的。谁说 HTTP GET 就不能通过 Body 来发送数据呢?
我的项目不支持GET请求发送body数据,所以只能在URL中以?xxx=yyy&aaa=bbb的方式传递参数,让我们来看看几种获取参数的方法。
适用于get方式提交,不适用于post方式提交。若"Content-Type"=“application/x-www-form-urlencoded”,可用post提交
URL形式
http://localhost:9001/mcs/classOperation/DD/DD_DD?formId=DD_DD_CONFIG_DDMODEL_SERVICE_LIST&classId=DC_ApplicationService&relClassId=DCRCOM_AppSysAppSrv&operationId=GetData&userId=mawei&operationInstanceId=DD_DD_CONFIG_DDMODEL_SERVICE_LIST_GetData&_=1567650209332
@GetMapping(value = "/classOperation/{geneId}/{sceneId}", produces="application/json;charset=utf-8")
public ResponseEntity<?> classOperation (@PathVariable String geneId, @PathVariable String sceneId,
String formId, String classId, String relClassId, String operationId, String operationInstanceId,
String userId, HttpSession session){
return new ResponseEntity<List>(new ArrayList(), HttpStatus.OK);
}
public String test(HttpServletRequest request) {
String geneId=request.getParameter("geneId");
String sceneId=request.getParameter("sceneId");
System.out.println("username is:"+geneId);
System.out.println("password is:"+sceneId);
return null;
}
这是我编码初期常用的方式,但是很不通用,需要前台参数与后台bean字段名相同,且不能接收bean中没有的字段。可以用Class clazz = JSON.parseObject(param, Class.class)
public String test(OcSolution solution) {
System.out.println("geneId is:"+solution.getGeneId());
System.out.println("sceneId is:"+solution.getSceneId());
return null;
}
public String test(HttpServletRequest request) {
System.out.println("QueryStringis:"+request.getQueryString());
return null;
}
用这种方式获取的QueryString是?
后面的所有字符串
如formId=DD_DD_CONFIG_DDMODEL_SERVICE_LIST&classId=DC_ApplicationService&relClassId=DCRCOM_AppSysAppSrv&operationId=GetData&userId=mawei&operationInstanceId=DD_DD_CONFIG_DDMODEL_SERVICE_LIST_GetData&_=1567650209332
可以根据需要进行处理,比如替换成json格式以便解析
如果使用REST接口,当参数比较多的情况,应该怎么做?
或者说,有些 参数希望放入REST请求的路径中,有些则不希望,应该怎么做?
希望各路大神提出宝贵意见
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。