Ecode前后端传值

发布于:2025-02-28 ⋅ 阅读:(10) ⋅ 点赞:(0)

说明

在泛微 E9 系统开发过程中,使用 Ecode 调用后端接口并进行传值是极为常见且关键的操作。在上一篇文章中,我们探讨了 Ecode 调用后端代码的相关内容,本文将深入剖析在 Ecode 中如何向后端传值,以及后端又该如何处理接收这些值

GET请求传参

前端传参

这种方式是将参数直接嵌入到请求的 URL 路径中。例如,假设我们现在要将前端的requestId传给接口,可以参考以下代码

getNodeReason(){
        var requestId = WfForm.getBaseInfo().requestid;
        // console.log("输出对应的请求Id" + requestId);
        WeaTools.callApi(`http://IP:PORT/api/workflow/test/getRequestId?requestId=${requestId}`, 'get', {
            _time: Date.now()
        }).then((data) => {
            console.log(data);
            // 直接使用 data 数组,无需进行 JSON 解析
            this.setState({
              getRequestInfo: data
            }, () => {
                console.log(this.state.getRequestInfo);
            });
            
           
        });
    }

在这里需要注意的就是对应的URL需要用反引号进行标注,这样才好将上面查到的requestId变量进行传输

后端如何接收参数

@GET
@Path("/getRequestId")
@Produces(MediaType.TEXT_PLAIN)
public String getRequestInfo(@QueryParam("requestId") String requestId){
    //输出接收到的参数(如果没有配置log的话,也可以通过System.out.println()来进行输出)
    this.log.info("获取接口方法getNodeReason传递的参数requestId"+requestId);
   
    
}

在后端中非常需要注意的一点就是这个@QueryParam注解括号里面写的名称必须和前端传递的参数名称一致才行

截图展示:

POST请求

前端传参

在前端使用 POST 请求时,我们需要将参数封装在请求体中,并设置正确的请求头

getData() {
  const data = {
    name: "John1",
    age: 25
  };

  fetch('http://IP:PORT/api/workflow/test/getInfo2', {//IP:PORT输入对应的服务器地址以及对应的端口号就行
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(data)
  })
    .then(response => response.json())
    .then(data => {
      this.setState({
        jsonData: data
      }, () => {
        console.log(this.state.jsonData);
        console.log("输出姓名值" + this.state.xm);
      });
    })
    .catch(error => {
      console.error('请求出错:', error);
    });
}

后端接收处理

需要注意的是,需要用一个实体类来接收参数;实体类中需要注明所有传递的内容

@Path("/workflow/test")
public class EcodeTestActionWorkflow {
    @POST
    @Path("/getInfo2")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public String test(UserData userData) {
        JSONObject json = new JSONObject();
        json.put("age", userData.getAge());
        json.put("name", userData.getName());
        json.put("username", "cccc");
        json.put("test", "test4");
        return json.toString();
    }
}

实体类如下:根据上面前端传参确定参数是age和name;这个实体类需要包含前端传递的所有参数对应的变量,以及它们的gettersetter方法,确保后端能够顺利接收并处理这些参数。

public class UserData {
		 private String name;
		 private int age;
		 // Getter and Setter methods
	    public String getName() { return name; }
	    public void setName(String name) { this.name = name; }
	    public int getAge() { return age; }
	    public void setAge(int age) { this.age = age; }

}

截图展示: