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

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

1. Web应用中的接口调用

使用Fetch API

javascript 复制代码
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 (推荐)

javascript 复制代码
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

javascript 复制代码
// 在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应用

javascript 复制代码
const { ipcRenderer } = require('electron');

// 发送消息到主进程
ipcRenderer.send('api-call', { data: 'some data' });

// 接收主进程响应
ipcRenderer.on('api-response', (event, arg) => {
  console.log(arg);
});

3. 本地HTTP服务器接口

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

javascript 复制代码
// 调用本地服务
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实时通信

javascript 复制代码
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头
  • 对于敏感操作,实现身份验证和授权机制

选择哪种方法取决于你的具体需求、上位机接口的类型以及应用的安全要求。

相关推荐
m0_748229995 分钟前
Vue3高效学习路线全攻略
前端·javascript·vue.js
木辰風21 分钟前
vue在IE浏览器下父页面向子页面传输对象时数据丢失
前端·javascript·html
@呵呵34 分钟前
上传图片裁剪
开发语言·javascript·vue.js
Dragon Wu1 小时前
Web前端 认证token的安全存储策略
前端·javascript·安全·react.js·前端框架
雨季6661 小时前
构建 OpenHarmony 简易分账计算器:用除法解决日常公平难题
javascript·flutter·ui·自动化·dart
克里斯蒂亚诺更新1 小时前
vue2 单文件组件加入浏览器的title和ico的方法
前端·javascript·html
csdn_aspnet2 小时前
JavaScript常用算法深度解析:从浏览器到Node.js的实战
javascript·node.js
2401_892000522 小时前
Flutter for OpenHarmony 猫咪管家App实战 - 疫苗记录实现
开发语言·javascript·flutter
Xxtaoaooo2 小时前
React Native跨平台鸿蒙开发实战:JS 与 ArkTS Native的通信机制详解
javascript·react native·harmonyos
betazhou2 小时前
借用Deepseek写一个定期清理备份文件的ps脚本
开发语言·前端·javascript·ps·deepseek·清理备份文件