添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
createTimeRange : { handler ( newDate ) { if ( newDate && ( newDate [ 0 ] instanceof Date ) && ( newDate [ 1 ] instanceof Date ) ) { // 请假开始时间、结束时间 this . form . createStartTime = newDate [ 0 ] ; this . form . createEndTime = newDate [ 1 ] ; // 调用若依封装的request请求 export function listLeave ( query ) { return request ( { url : '/workflow/business/leave/list' , method : 'get' , params : query

附上前台的请求参数即query:

createEndTime: Wed Nov 10 2021 00:00:00 GMT+0800 (中国标准时间) {}
createStartTime: Mon Nov 01 2021 00:00:00 GMT+0800 (中国标准时间) {}
pageNum: 1
pageSize: 10
type: undefined

后台controller代码:

@GetMapping("/list")
public TableDataInfo list(LeaveReq leaveReq) throws Exception {
    startPage();
    List<LeaveEntity> leaveEntities = leaveService.selectLeaveEntityList(leaveReq);
    return getDataTable(leaveEntities);
public class LeaveReq implements Serializable {
    private static final long serialVersionUID = 1L;
     * 请假类型
    private Integer type;
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date createStartTime;
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date createEndTime;
	...

出现的问题:
后台参数接收不到createStartTimecreateEndTime两个参数
查看请求携带参数发现:

pageNum: 1
pageSize: 10
type: 0
并没有把createStartTImecreateEndTime带进请求参数里

查看request.js

// request拦截器
service.interceptors.request.use(config => {
  // 是否需要设置 token
  const isToken = (config.headers || {}).isToken === false
  if (getToken() && !isToken) {
    config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
  // get请求映射params参数
  if (config.method === 'get' && config.params) {
    let url = config.url + '?';
    for (const propName of Object.keys(config.params)) {
      const value = config.params[propName];
      var part = encodeURIComponent(propName) + "=";
      if (value !== null && typeof(value) !== "undefined") {
      	// 问题就出在这里
        if (typeof value === 'object') {
          for (const key of Object.keys(value)) {
            if (value[key] !== null && typeof (value[key]) !== 'undefined') {
              let params = propName + '[' + key + ']';
              let subPart = encodeURIComponent(params) + '=';
              url += subPart + encodeURIComponent(value[key]) + '&';
        } else {
          url += part + encodeURIComponent(value) + "&";
    url = url.slice(0, -1);
    config.params = {};
    config.url = url;
  return config
}, error => {
    console.log(error)
    Promise.reject(error)

发现原因:
在进参数之后会对里面携带的每个参数进行类型判定,如果不是object,则加到路径后面;否则又会再次对它的键值对进行迭代添加。
typeofDate类型返回的结果是Object,而它没有键值对,所以进不了迭代添加的方法,也就加入不到请求参数里面。
所以最后的请求参数就只有:pagenumpagesizetype这几个了。

解决方法:
传递String类型的日期参数,修改前台即可

<el-form-item label="创建时间">
  <el-date-picker
    v-model="createTimeRange"
    size="small"
    style="width: 240px"
    value-format="yyyy-MM-dd"
    type="daterange"
    range-separator=""
    start-placeholder="开始时间"
    end-placeholder="结束时间"
  </el-date-picker>
</el-form-item>
watch: {
  createTimeRange: {
    handler(newDate) {
      if (newDate) {
        this.queryParams.createStartTime = newDate[0];
        this.queryParams.createEndTime = newDate[1];

最后的携带参数:

createEndTime: “2021-11-17”
createStartTime: “2021-11-01”
pageNum: 1
pageSize: 10
type: undefined

后台不用改,因为后台会自动转换成Date类型

若依框架中GET方式传参时无法接收日期格式参数前台:&lt;el-form-item label="创建时间"&gt; &lt;el-date-picker v-model="createTimeRange" size="small" style="width: 240px" format="yyyy-MM-dd" type="daterange" range-separator="至" start-placeholder="开始时间"
1、遇到的问题 在项目,后端接口经常将日期参数定义为Date类型,在与前台或者第三方服务对接,经常出现一个问题,比如: Date startTime,定义好的参数是基于日期格式参数,后续复用或者其他原因,后端的对接方,可能传递的参数会改变,但是原先约定的格式也会继续使用,例如之前约定是 yyyy-MM-dd HH:mm:ss,后面又增加了yyyy/MM/dd HH:mm:ss,甚至使用long间戳格式日期参数。 出了问题,后端背锅,要求马上出解决方案。。。
若依(ruoyi)系统测试接口说明1. 生成验证码2. 登录获取token信息3. 测试接口 最近测试若依项目,不知道怎么操作,多亏有好人将这篇文章相赠,特地分享出来供大家学习参考,希望大家共同进步。 1. 生成验证码 因为登录需要输入验证码。 登录controller代码如下: 用postman 发起get请求 请求地址如下:http://localhost:8080/captchaImag...
作为微服务的门面,应用于服务数量众多、复杂度较高、规模比较大的系统。 客户端通过 API 网关与微服务交互,客户端只需要知道 API 网关地址即可,而不需要维护大量的服务地址,简化了客户端的开发。 客户端直接与 API 网关通信,能够减少客户端与各个服务的交互次数。 客户端与后端的服务耦合度降低。 节省流量,提高性能,提升用户体验。 API 网关还提供了安全、流控、过滤、缓存、计费以及监控等 API 管理功能。 常见API 网关实现方案 Spring Cloud G
RestTemplate restTemplate = new RestTemplate(); String url = "http://example.com/api/users?id={id}"; Map<String, String> params = new HashMap<>(); params.put("id", "123"); ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, null, String.class, params); 在这个代码示例,我们首先创建了一个RestTemplate对象,然后构造了一个请求URL,其{id}是一个占位符,表示我们将要传递的参数。然后我们创建了一个Map,并在其放入了一个名为"id"的键和对应的参数值"123"。最后,我们使用exchange方法发送GET请求,并将请求结果赋值给ResponseEntity对象。 ### 回答2: resttemplate.exchange方法是Spring提供的一个HTTP请求发送的工具方法。在使用get请求,可以通过以下方式传递参数。 首先,创建一个HttpHeaders对象,用于设置请求头信息。例如: HttpHeaders headers = new HttpHeaders(); headers.add("User-Agent", "Mozilla/5.0"); 然后,创建一个HttpEntity对象,用于设置请求体信息和请求头信息。例如: HttpEntity<String> requestEntity = new HttpEntity<>(headers); 接下来,使用resttemplate.exchange方法发送get请求,并传入请求URL,请求方式,请求头和返回值类型。例如: String url = "http://api.example.com/users"; ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, requestEntity, String.class); 最后,通过response对象获取请求的结果,如状态码、响应头和响应体。例如: HttpStatus statusCode = response.getStatusCode(); HttpHeaders responseHeaders = response.getHeaders(); String responseBody = response.getBody(); 以上就是使用resttemplate.exchange方法进行get请求传参的代码示例。在示例,我们通过设置请求头信息和请求体信息,然后使用exchange方法发送get请求,并获取请求的结果。 ### 回答3: RestTemplate是Spring框架提供的一个用于发送HTTP请求的类,可以方便地进行GET请求并传递参数。在使用RestTemplate发送GET请求传递参数方式主要有两种,一种是使用普通参数传递,另一种是使用URI模板传递参数。 1. 使用普通参数传递: 示例代码如下: ```java // 创建RestTemplate对象 RestTemplate restTemplate = new RestTemplate(); // 设置请求参数 String url = "http://example.com/api?param1=value1&param2=value2"; // 发送GET请求接收响应 ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, null, String.class); // 获取响应结果 String result = response.getBody(); 在上述代码,我们通过在url使用"?"来指定参数的起始位置,然后使用"&"来分隔多个参数,并使用"="来连接参数名和参数值。通过这种方式,可以一次性传递多个参数。 2. 使用URI模板传递: 示例代码如下: ```java // 创建RestTemplate对象 RestTemplate restTemplate = new RestTemplate(); // 设置请求参数 String url = "http://example.com/api/{param1}/{param2}"; // 设置URI参数值 Map<String, String> params = new HashMap<>(); params.put("param1", "value1"); params.put("param2", "value2"); // 发送GET请求接收响应 ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, null, String.class, params); // 获取响应结果 String result = response.getBody(); 在以上代码,我们使用"{param}"的形式来表示模板参数,在url使用对应的参数名称,然后在exchange方法的参数列表传递一个Map对象,其key为参数名称,value为参数值。RestTemplate会自动将Map的参数值替换到URL对应的位置上,完成参数传递。 总结起来,RestTemplate.exchange方法可以用于发送GET请求并传递参数,可以使用普通参数传递或者使用URI模板传递参数,使用起来非常方便。