当前位置: 首页 > article >正文

Ecode前后端传值

说明

在泛微 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; }

}

截图展示:


http://www.kler.cn/a/564529.html

相关文章:

  • 3 年→ 资深开发速通计划 序言
  • AndroidManifest.xml文件的作用
  • VSCode轻松调试运行.Net 8.0 Web API项目
  • 前端TypeScript 面试题及参考答案
  • leetcode 214. 最短回文串
  • 本地部署语言大模型deepseek完整步骤
  • SheetDataMerge合并工作表(excel)内多行同类数据的小工具。
  • C语言基础之【指针】(上)
  • 快速排序与归并排序模板
  • 微信小程序换行符真机不生效问题
  • DeepSeek再推开源力作,DeepEP高效通信库来袭
  • ES6模块化详解:导入与导出方式
  • 空中机械臂仿真问题
  • Java List实现类面试题
  • 华为AP 4050DN-HD的FIT AP模式改为FAT AP,家用FAT基本配置
  • 前端代理,解决跨域问题讲解
  • PXE批量网络装机与Kickstart自动化安装工具
  • 算法每日一练 (6)
  • 【愚公系列】《Python网络爬虫从入门到精通》033-DataFrame的数据排序
  • 51c嵌入式~电路~合集12