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

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

相关推荐
bearpping2 小时前
Nginx 配置:alias 和 root 的区别
前端·javascript·nginx
@大迁世界2 小时前
07.React 中的 createRoot 方法是什么?它具体如何运作?
前端·javascript·react.js·前端框架·ecmascript
颜酱3 小时前
DFS 岛屿系列题全解析
javascript·后端·算法
霍理迪4 小时前
Vue的响应式和生命周期
前端·javascript·vue.js
竹林8187 小时前
在Web3前端用Node.js子进程批量校验钱包,我踩了这些性能与安全的坑
javascript·node.js
Kel8 小时前
深入剖析 openai-node 源码:一个工业级 TypeScript SDK 的架构之美
javascript·人工智能·架构
SuperEugene9 小时前
Vue3 模板语法规范实战:v-if/v-for 不混用 + 表达式精简,避坑指南|Vue 组件与模板规范篇
开发语言·前端·javascript·vue.js·前端框架
Luna-player9 小时前
Vue 3 + Vue Router 的路由配置,简单示例
前端·javascript·vue.js