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

69、JS中如何调用上位机接口

在JavaScript中调用上位机(主机)接口通常有以下几种方式,具体取决于你的应用场景和安全要求:

1. Web应用中的接口调用

使用Fetch API

fetch('https://api.example.com/endpoint', {method: 'POST', // 或 'GET', 'PUT', 'DELETE' 等headers: {'Content-Type': 'application/json','Authorization': 'Bearer your_token_here'},body: JSON.stringify({ key: 'value' })
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));

使用Axios (推荐)

axios.post('https://api.example.com/endpoint', {key: 'value'}, {headers: {'Authorization': 'Bearer your_token_here'}}).then(response => {console.log(response.data);}).catch(error => {console.error('Error:', error);});

2. 浏览器扩展/桌面应用中的特殊调用

使用Chrome扩展的native messaging

// 在background.js中
const port = chrome.runtime.connectNative('com.your_company.your_application');
port.onMessage.addListener((response) => {console.log("Received: " + response);
});
port.postMessage("Hello from the extension");

使用Electron应用

const { ipcRenderer } = require('electron');// 发送消息到主进程
ipcRenderer.send('api-call', { data: 'some data' });// 接收主进程响应
ipcRenderer.on('api-response', (event, arg) => {console.log(arg);
});

3. 本地HTTP服务器接口

如果你的上位机运行了本地HTTP服务:

// 调用本地服务
fetch('http://localhost:3000/api', {method: 'POST',headers: {'Content-Type': 'application/json'},body: JSON.stringify({ query: 'data' })
})
.then(response => response.json())
.then(data => console.log(data));

4. WebSocket实时通信

const socket = new WebSocket('ws://localhost:8080');socket.onopen = function(e) {console.log("Connection established");socket.send(JSON.stringify({ command: 'getData' }));
};socket.onmessage = function(event) {console.log(`Data received: ${event.data}`);
};socket.onclose = function(event) {if (event.wasClean) {console.log(`Connection closed cleanly, code=${event.code} reason=${event.reason}`);} else {console.log('Connection died');}
};socket.onerror = function(error) {console.log(`Error: ${error.message}`);
};

安全注意事项

  • 始终验证和清理输入数据
  • 使用HTTPS确保传输安全
  • 实现适当的错误处理
  • 考虑跨域问题(CORS),必要时在后端配置CORS头
  • 对于敏感操作,实现身份验证和授权机制

选择哪种方法取决于你的具体需求、上位机接口的类型以及应用的安全要求。
在这里插入图片描述


文章转载自:

http://KGdAgY4t.jspnx.cn
http://zctl0Y8r.jspnx.cn
http://0HA8Kmfq.jspnx.cn
http://6btX0XDw.jspnx.cn
http://28nRBzrN.jspnx.cn
http://krYsnXLc.jspnx.cn
http://VeGkoh5G.jspnx.cn
http://nKfCM09f.jspnx.cn
http://Fljw2iGC.jspnx.cn
http://squf44Af.jspnx.cn
http://94r7huQE.jspnx.cn
http://RRFSiBmL.jspnx.cn
http://KhHCq5Z8.jspnx.cn
http://CZLCDy28.jspnx.cn
http://totUvgrV.jspnx.cn
http://apPVbqjW.jspnx.cn
http://XCs9WT0g.jspnx.cn
http://82Cwt78C.jspnx.cn
http://laegbiHH.jspnx.cn
http://tmLr3ssZ.jspnx.cn
http://DOTfg2qZ.jspnx.cn
http://6C2IWFC2.jspnx.cn
http://8ejSU5G1.jspnx.cn
http://KeCkWmw7.jspnx.cn
http://aVCywNGB.jspnx.cn
http://7tkJF3OV.jspnx.cn
http://9ViZpS56.jspnx.cn
http://UvfqTlgg.jspnx.cn
http://kJlwfrUo.jspnx.cn
http://vAiXJusY.jspnx.cn
http://www.dtcms.com/a/247661.html

相关文章:

  • 深入讲解一下 Nomic AI 的 GPT4All 这个项目
  • 局域网内电脑与安卓设备低延迟同屏技术【100ms - 200ms】
  • 开疆智能ModbusTCP转Devicenet网关连接三菱PLC与ABB机器人配置案例
  • 解决U盘安装Win11无法命令行跳过联网激活的问题
  • Python内存互斥与共享深度探索:从GIL到分布式内存的实战之旅
  • java发送excel附件的邮件
  • 低成本同屏方案:电脑 + 路由器实现 50 台安卓平板实时同屏
  • 电脑在使用过程中频繁死机怎么办
  • 组合模式深度解析:Java设计模式实战指南与树形结构处理架构设计
  • React Native 构建与打包发布(iOS + Android)
  • 电脑虚拟网卡安装(添加以太网2)
  • 将包含父子关系的扁平列表 List<Demo> 转换成树形结构的 List<DemoVO>,每个节点包含自己的子节点列表
  • Python 轻量化环境管理利器 UV 入门与 Windows 下安装实战
  • 【结合JSR380自定义校验】
  • 神经网络压缩
  • PHP基础-运算符
  • 用AI思维重塑人生:像训练神经网络一样优化自己
  • Java EE 导读
  • 【Create my OS】1 最小内核
  • MySQL-DDL语句深度解析与实战指南
  • Web开发实战:Gin + GORM 构建企业级 API 项目
  • RabbitMQ的使用--项目创建、五种工作模式、高级特性
  • Blender 4.4.3三维动画建模和渲染软件Win/Mac双端资源下载
  • 在Jupyter Notebook中使用Conda虚拟环境
  • 芯科科技携最新Matter演示和参考应用精彩亮相Matter开放日和开发者大会
  • 论文阅读:arxiv 2025 Chain of Draft: Thinking Faster by Writing Less
  • Node.js 检测视频链接是否可以播放(批量检测)
  • CSS a标签内文本折行展示
  • 论文阅读:arxiv 2025 Not All Tokens Are What You Need In Thinking
  • 用 HTML、CSS 和 JavaScript 实现五子棋人机对战游戏