JavaScript调用ABAP后端发布的restful服务

1.消费代码

我这里账号密码配置在node.js的.env,所以注释了组装Authrization的部分

let url = 'http://localhost:3000/api/zbakewm?ACTION=GET_BSK_INFO'; // const USERNAME = '账号'; // const PASSWORD = '密码'; // function getAuthHeader() { // const credentials = btoa(`${USERNAME}:${PASSWORD}`); // return `Basic ${credentials}`; // } fetch(url, { method: 'POST', headers: { // 'Authorization': getAuthHeader(), 'Content-Type': 'application/json' }, body: JSON.stringify({ // 你的数据 "in_card_id": "300003390613" }) }) .then(response => response.json()) .then(data => { console.log(data); }).catch(error => { console.error('Error:', error); });

2.通过node.js服务提供代理,解决CORS跨域问题

// server.js require('dotenv').config(); const express = require('express'); const axios = require('axios'); const cors = require('cors'); const helmet = require('helmet'); const morgan = require('morgan'); const app = express(); const PORT = process.env.PORT || 3000; // 安全中间件 app.use(helmet()); // 设置安全 headers app.use(cors()); // 允许所有域名 app.use(morgan('combined')); // 日志 app.use(express.json({ limit: '10mb' })); // 构造 ABAP Basic Auth 头 const abapAuth = 'Basic ' + Buffer.from( `${process.env.ABAP_USER}:${process.env.ABAP_PASS}` ).toString('base64'); console.log('Generated Auth Header:', abapAuth); // 通用代理路由 app.use('/api', async (req, res) => { try { const targetPath = req.originalUrl.replace('/api', ''); const url = `${process.env.ABAP_URL}${targetPath}`; console.log(`Proxying to ABAP: ${url}`); const response = await axios({ method: req.method, url: url, headers: { // ...req.headers, Authorization: abapAuth, // Host: new URL(process.env.ABAP_URL).host, // 避免 Host 头问题 'Content-Type': req.headers['content-type'] || 'application/json' }, data: req.body, httpsAgent: process.env.NODE_TLS_REJECT_UNAUTHORIZED === '0' ? new (require('https')).Agent({ rejectUnauthorized: false }) : undefined, // 仅用于自签名证书测试!生产环境应使用有效证书 timeout: 180000 }); // 返回 ABAP 响应 res.status(response.status).json(response.data); } catch (error) { console.error('Proxy error:', error.message); if (error.response) { res.status(error.response.status).send(error.response.data); } else { res.status(502).json({ error: 'Failed to reach ABAP system' }); } } }); // 健康检查 app.get('/health', (req, res) => { res.json({ status: 'OK', timestamp: new Date().toISOString() }); }); app.listen(PORT, () => { console.log(`ABAP Proxy running on port ${PORT}`); });

.env配置文件

ABAP_URL=http://ip:port ABAP_USER=账号 ABAP_PASS=密码 PORT=3000 NODE_ENV=production

cd到项目目录

运行终端命令安装依赖

npm init -y && npm install dotenv express axios cors helmet morgan

依赖安装成功后生成的文件

终端命令启动代理服务

node node proxy-server.js

可以看到代理服务已经成功启动

3.启动前端页面可以看到正常调用ABAP后端服务,获取到数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1165013.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DeepSeek V4五大技术突破解析:大模型行业的新格局与新趋势

DeepSeek V4集成五大技术突破,将提升编码能力、长文本处理和减少幻觉。Google和DeepSeek引领行业突破,主流基模能力将趋同。推理模型意义不大,多模态技术不成熟。行业可能从第一范式向第二范式转变,基于假设-数学验证探索新边界。…

[毕设选题] 数据分析方向经典实用毕设选题汇总与参考 新颖方向 大全✅​

目录标题前言毕设选题选题迷茫选题的重要性最后前言 📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充…

手把手教你用8款AI论文生成器:一键极速搞定超长篇幅论文指南

还在为动辄上万字的论文而头疼吗?从选题构思、搭建框架,到填充内容、规范格式,每一个环节都耗时耗力。如今,AI工具的崛起为学术写作带来了革命性的效率提升。但面对琳琅满目的AI工具,如何选择并有效利用,是…

Flink反压机制解析:如何应对数据处理瓶颈

Flink反压机制深度解析:从原理到实战,解决数据处理瓶颈 一、标题选项 《Flink反压机制全揭秘:如何让你的流处理任务不再“卡壳”?》《彻底搞懂Flink反压:从底层原理到优化实践,解决数据处理瓶颈》《Flink反…

严肃面试官与搞笑程序员的三轮大厂面试对决

严肃面试官与搞笑程序员的三轮大厂面试对决 第一轮 面试官: 谢飞机,我们先从基础问题开始吧。请说说 HashMap 的工作原理? 谢飞机: 啊,这个简单!HashMap 的工作原理就是用一个哈希值找到数组的位置&#xf…

Windows小工具,免费实用

今天给大家介绍两款好用的小软件,一款是一寸照片生成软件,一款是小学数学运算题目生成软件,非常的好用,完全免费,有需要的小伙伴可以下载收藏。 1寸相片调整 一键操作,永久免费 有时候需要用到一寸照片&am…

SpeedAI vs 笔灵AI降重:哪个更适合毕业论文?优劣全分析

SpeedAI vs 笔灵AI降重:哪个更适合毕业论文?优劣全分析 TL;DR:SpeedAI和笔灵AI都是热门降AI率工具,但各有优劣。SpeedAI价格低(1.2元/千字)、有免费试用,但效果稳定性一般;笔灵AI学术…

手把手教你用豆包写论文后快速通过AIGC检测

手把手教你用豆包写论文后快速通过AIGC检测 TL;DR:用豆包写论文后AI率太高?别慌,本文教你用豆包学术化改写技巧专业降AI工具的组合方法,实测能把AI率从84%降到6%以下。掌握这套流程,AIGC检测不再是问题。 豆包写的论文…

免费vs付费降AI工具哪个香?7款横评告诉你答案

title: “免费vs付费降AI工具哪个香?7款横评告诉你答案” slug: “free-vs-paid-ai-reduction-tools-comparison” date: 2026-01-15 author: “论文工具测评员” tags: [“免费降AI工具”, “付费降AI工具对比”, “降AI工具横评”, “免费降AI率”, “降AI工具哪个…

用豆包写论文的同学注意了!这4款降AI工具必须收藏

用豆包写论文的同学注意了!这4款降AI工具必须收藏 TL;DR:豆包写论文效率高但AI率容易飙到80%以上,一旦被学校检测出来就麻烦了。本文推荐4款专业降AI工具,其中嘎嘎降AI和比话降AI效果最好,能把豆包生成内容的AI率从84%…

豆包/Kimi写论文后AI率太高?这几款工具一键搞定

title: “豆包/Kimi写论文后AI率太高?这几款工具一键搞定” slug: “doubao-kimi-paper-ai-rate-reduction-tools” date: 2026-01-15 author: “论文降AI攻略” tags: [“豆包写论文降AI”, “Kimi论文AI率高”, “AI写作降AI工具”, “豆包降AI”, “Kimi降AI率”…

2026年最值得入手的8款降AI神器,亲测第3款效果炸裂

2026年最值得入手的8款降AI神器,亲测第3款效果炸裂 TL;DR:2026年知网AIGC检测系统升级后,传统降重方法已经失效。本文实测8款主流降AI工具,重点推荐嘎嘎降AI(达标率99.26%)和比话降AI(知网AI率可…

毕业季救急:24小时内把论文AI率降到合格线的实战教程

毕业季救急:24小时内把论文AI率降到合格线的实战教程 TL;DR:论文AI率太高,明天就要交稿?别慌,本文是一份精确到小时的紧急降AI方案。根据你剩余的时间(12-24小时/6-12小时/6小时以内)&#xff0…

干货:不完美的智慧,一个分词算法揭示的人类阅读之谜

不完美的智慧:一个分词算法揭示的人类阅读认知之谜在人类文明的星空中,语言是最为神秘的星座之一。我们每时每刻都在进行着看似 effortless 的阅读行为——目光扫过文字,意义便自然浮现。然而,这种表面上的轻松自在,掩…

2026年最值得入手的8款降AI工具推荐,亲测第3款效果炸裂

2026年最值得入手的8款降AI工具推荐&#xff0c;亲测第3款效果炸裂 TL;DR&#xff1a;论文AI率太高&#xff1f;本文实测对比了8款主流降AI工具&#xff0c;重点推荐嘎嘎降AI&#xff08;达标率99.26%&#xff09;、比话降AI&#xff08;知网AI率<15%保证&#xff09;和AIGC…

VM安装后没有虚拟网卡

安装好vm后&#xff0c;下面两个发现没有&#xff0c;导致无法从外面ping通虚拟机里面而且在重装VM时&#xff0c;一直卡在“正在安装虚拟网络驱动程序”阶段。解决 原因就是上次的没有卸载干净&#xff0c;主要是注册表没有卸载干净 第一步&#xff1a;可以键盘按winr&#xf…

别再手动改论文了!2026年最省时的AI降重工具推荐

别再手动改论文了&#xff01;2026年最省时的AI降重工具推荐 TL;DR&#xff1a;手动改论文降AI率费时费力效果还不好&#xff0c;一章内容可能要改一整天。2026年最省时的方法是用专业工具&#xff0c;几分钟就能搞定。本文推荐嘎嘎降AI和比话降AI&#xff0c;效率比手动高几十…

研究生师兄私藏的4款降AI神器,低调好用不踩雷

title: “研究生师兄私藏的4款降AI神器&#xff0c;低调好用不踩雷” slug: “graduate-student-ai-reduction-tools-recommendation” date: 2026-01-15 author: “研三师兄” tags: [“研究生降AI工具”, “师兄推荐降AI”, “硕士论文降AI”, “博士论文降AI率”, “研究生论…

研究生师兄私藏的4款降AI神器,低调好用不踩雷

title: “研究生师兄私藏的4款降AI神器&#xff0c;低调好用不踩雷” slug: “graduate-student-ai-reduction-tools-recommendation” date: 2026-01-15 author: “研三师兄” tags: [“研究生降AI工具”, “师兄推荐降AI”, “硕士论文降AI”, “博士论文降AI率”, “研究生论…