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

前端与传统接口的桥梁:JSONP解决方案

1.JSONP原理

1.1.动态脚本注入

说明:通过创建 <script> 标签绕过浏览器同源策略

 1.2.回调约定

说明:服务端返回 函数名(JSON数据) 格式的JS代码

 1.3.自动执行

说明:浏览器加载脚本后立即触发前端预定义的回调函数(现代开发建议优先使用 CORS 替代)

2.测试接口

说明:apifox测试接口,响应成功。

3.安装依赖 

npm i jsonp

 

4.代码实现

说明:组件案例

<script setup>
import jsonp from "jsonp";  // 导入jsonp库用于跨域请求
import {onMounted} from "vue";  // 导入Vue生命周期钩子// 最短路径分析函数
async function shortestPathAnalysis(baseUrl, pointArr){return new Promise((resolve, reject) => {// 请求参数配置const params = {hasLeastEdgeCount: false,  // 是否按最少弧段数查找parameter: JSON.stringify({  // 将分析参数转为JSON字符串resultSetting: {  // 结果返回设置returnEdgeFeatures: null,  // 不返回弧段属性returnEdgeGeometry: null,  // 不返回弧段几何信息returnEdgeIDs: null,  // 不返回弧段IDreturnNodeFeatures: null,  // 不返回结点属性returnNodeGeometry: null,  // 不返回结点几何信息returnNodeIDs: null,  // 不返回结点IDreturnPathGuides: null,  // 不返回路径引导信息returnRoutes: true  // 返回路径结果},weightFieldName: "length",  // 使用长度作为权重字段barrierEdgeIDs: null,  // 障碍弧段IDbarrierNodeIDs: null,  // 障碍结点IDbarrierPoints: null,  // 障碍点turnWeightField: null  // 转向权重字段}),nodes: JSON.stringify(pointArr),  // 将坐标点数组转为JSON字符串sectionCount: '1',  // 分段数sectionIndex: '0'  // 分段索引};// 将参数对象转换为查询字符串const queryString = Object.entries(params).map(([key, value]) => `${key}=${encodeURIComponent(value)}`)  // 对每个值进行URL编码.join('&');  // 用&连接所有参数const url = `${baseUrl}?${queryString}`;  // 拼接完整URL// 发起JSONP请求jsonp(url, {param: 'callback',  // 回调参数名timeout: 100000  // 超时时间100秒}, (err, data) => {if (err) {reject(err);  // 错误时拒绝Promisereturn;}resolve(data);  // 成功时解析Promise});});
}// 测试请求函数
const orderRequest = async () => {// 调用最短路径分析,传入服务地址和两个坐标点let result = await shortestPathAnalysis("https://iserver.supermap.io/iserver/services/transportationanalyst-sample/rest/networkanalyst/RoadNet@Changchun/path.jsonp",[{"x": 4494.7646522178, "y": -4672.6392297989},  // 起点坐标{"x": 4504.7354942047, "y": -4679.9418182963}  // 终点坐标])
}// 组件挂载后自动执行测试请求
onMounted(() => {orderRequest()
})
</script><template><!-- 空模板 -->
</template><style scoped>
/* 空样式 */
</style>

5.响应效果

 说明:响应成功

http://www.xdnf.cn/news/54379.html

相关文章:

  • 大数定理(LLN)习题集 · 答案与解析篇
  • QCPAxis、QCPGrid 和 QCPAxisTicker 三者关系
  • 关于隔离2:ADC芯片
  • 京东 h5st 5.1 详情 京东滑块 cfe 分析
  • Cursor工具你会用了吗
  • leetcode0078. 子集-medium
  • stm32 13位时间戳转换为时间格式、对时
  • Day58 | 179. 最大数、316. 去除重复字母、334. 递增的三元子序列
  • Linux系统的远程终端登录、远程图形桌面访问、 X图形窗口访问
  • 无回显RCE
  • 每日一道leetcode(补充版)
  • 具身智能零碎知识点(四):联合嵌入预测架构(JEPAs)详解
  • acwing--动态规划【线性dp】4/20、4/21
  • 网页的URL绝对路径和相对路径,以及各自的使用场景
  • 【Vulkan 入门系列】创建逻辑设备和图形、呈现队列,显示尺寸更改(三)
  • 错误: 找不到或无法加载主类 HelloWorld,cmd窗口,java命令,提示
  • PT站中的tracker
  • LangChain4j语言模型选型指南:主流模型能力全景对比
  • 生成式AI对话中提示词策略:明确问题、明确目标和提供背景信息是最有效的策略
  • 【CPU】中断即时性
  • leetcode(01)森林中的兔子
  • 机器学习(神经网络基础篇)——个人理解篇6(概念+代码)———参数优化篇
  • 模型上下文协议(MCP)详解
  • 【物理学】物理学——电机控制中常用的定则
  • AI 中的 CoT 是什么?一文详解思维链
  • select、poll、epoll实现多路复用IO并对比差异
  • C++类继承关键点总结
  • 模拟实现strcmp,strcpy,strlen,strcat,strstr
  • 类转换与强制类型转换详解
  • 双目视觉中的动态畸变矫正与跨视角信息融合