普元EOS-微前端调用base基座的ajax

2024-08-24 12:36

本文主要是介绍普元EOS-微前端调用base基座的ajax,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 前言

微前端调用EOS应用的服务或API,需要引入base基座,然后使用base基座中的ajax方法。

本文将介绍微前端的高开和低开使用base基座的Ajax的方法。

强烈建议不要自己引入axios或其他ajax库,因为EOS的服务接口都要求身份验证和授权,ajax请求时必须携带必要的用户信息,自己封装这些很麻烦,直接使用基座的AjaxUtil对象将非常简单

2 高开页面引入基座的Ajax

在高开页面引入Ajax代码和简单,只要页面中添加下面的代码。

import { AjaxUtil } from 'base/lib'

然后可以使用AjaxUtil工具进行get或post的方式请求。

在AjaxUtil可以获得ajax对象,调用方法如下:

const ajax1 = AjaxUtil.headers(AjaxUtil.buildHeaders()).ajax;

该方法获得的ajax对象,本质就是axios对象,有axios使用经验的同学完全可以将其动作axios对象使用。

2.1 关于headers方法和buildHeaders方法

EOS应用端的服务接口的调用,都要进行权限验证的,因此ajax请求的时候必须携带当前用户的token。

headers和buildHeaders方法将组装必要的Header信息,在ajax请求的时候携带在header中易通提交到服务端。

其中最重要的就是 Authorization 参数。

2.2 完整的代码

具体的代码例子可见下面:

<template><div class="main-div"><!-- 查询区域 --><div class="div-ke1"><div class="search-bar"><el-button type="primary" @click="doTest1">测试1</el-button></div><div class="list-container"><div > {{ resultInfo }} </div></div></div></div>
</template>
<script>import { AjaxUtil } from 'base/lib'export default {name: 'index',data() {return {resultInfo: ''}},methods: {doTest1() {// ajax请求验证devposToken是否有效const ajax1 = AjaxUtil.headers(AjaxUtil.buildHeaders()).ajax;ajax1.get('/api2/devops/pcm/dict/dict-entrys',{ params: { 'dictTypeId': 'DPS_PJM_PROJECT_TYPE' } }).then(resp1 => {if (resp1.data.code == 0) {this.resultInfo = resp1.data.data;} else {this.resp1Info = resp1.data.code + ':' + resp1.data.msg;}}).catch(err => {this.resp1Info = 'Api请求' + '出现了异常,请联系管理员解决。';});}}
}
</script><style type="scss" scoped>  
.main-div {height: 100%;.div-ke1 {height: 100%;padding: 3px;display: flex;flex-direction: column;}}.search-bar {background-color: #f5f5f5;gap: 10px;padding: 10px;.sb-input1 {max-width: 200px;}}.list-container {flex: 1;overflow-y: auto;}
</style>

3 高开页面get方式ajax请求

代码如下:

<script>import { AjaxUtil } from 'base/lib'export default {name: 'index',data() {return {resultInfo: ''}},methods: {doTest1() {// ajax请求验证devposToken是否有效const ajax1 = AjaxUtil.headers(AjaxUtil.buildHeaders()).ajax;ajax1.get('/api2/devops/pcm/dict/dict-entrys',{ params: { 'dictTypeId': 'DPS_PJM_PROJECT_TYPE' } }).then(resp1 => {if (resp1.data.code == 0) {this.resultInfo = resp1.data.data;} else {this.resp1Info = resp1.data.code + ':' + resp1.data.msg;}}).catch(err => {this.resp1Info = 'Api请求' + '出现了异常,请联系管理员解决。';});}}
}
</script>

get方式提交的参数格式为 {"params":  { 参数键值对 } } 

例子如下:

 ajax1.get('/api2/devops/pcm/dict/dict-entrys',{ params: { 'dictTypeId': 'DPS_PJM_PROJECT_TYPE' } })

返回数据为 response 对象,该对象的data 属性是服务端相应返回的数据。

例子如下:

ajax1.get('/api2/devops/pcm/dict/dict-entrys',{ params: { 'dictTypeId': 'DPS_PJM_PROJECT_TYPE' } }).then(resp1 => {if (resp1.data.code == 0) {this.resultInfo = resp1.data.data;} else {this.resp1Info = resp1.data.code + ':' + resp1.data.msg;}})

4 高开页面Post方式Ajax请求

post方式请求本质上与get方式几乎一样,只是参数直接提供即可,而不需要 params 嵌套一层。

例子如下:

ajax1.post('/api2/devops/pcm/dict/dict-entrys',{ 'dictTypeId': 'DPS_PJM_PROJECT_TYPE' } ).then(resp1 => {if (resp1.data.code == 0) {this.resultInfo = resp1.data.data;} else {this.resp1Info = resp1.data.code + ':' + resp1.data.msg;}})

5 低开页面Ajax请求

相对高开页面的Ajax请求,低开页面提供的Ajax请求更方便,低开页面的Ajax封装的更好。

5.1 简单的get请求

get方式请求的语法如下:

let url = "http://ip:port/路径";
let params = {"key1":"value1","key2":"value2" ....};this.Ajax.get(url, params).then( respData=>{console.log(respData)
})

注意:响应数据与高开响应的数据不同,返回值是服务端相应的数据,而不是response对象。具体的可以自己了解一下response对象和response响应数据。

5.2 不带ip和端口的地址请求

在低开的时候,请求后端服务是不需要ip和端口的,因为前端的地址和后端的地址是一样的。

这时候get或post方法需要加第3个参数false,否则请求的时候路径上自动加上低开前缀。

let url = "/路径";
let params = {"key1":"value1","key2":"value2" ....};this.Ajax.get(url, params,false).then( respData=>{console.log(respData)
})

5.3 完整的例子

例子如下:

let url = '/api2/devops/pcm/template/templates';
let params = {'templateType': 'project','projectScope': 'project'
};
const respData1 = await this.Ajax.get(url, params, false);
if(respData1 .code == 0 ){console.log( respData1.data );
}

5.4 await方式请求

let url = '/api2/devops/pcm/template/templates';
let params = {'templateType': 'project','projectScope': 'project'
};
const respData1 = await this.Ajax.get(url, params, false);
if (respData1.code == 0) {console.log( respData1.data );
}

await方式请求看起来更优雅。

这篇关于普元EOS-微前端调用base基座的ajax的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1102493

相关文章

Idea调用WebService的关键步骤和注意事项

《Idea调用WebService的关键步骤和注意事项》:本文主要介绍如何在Idea中调用WebService,包括理解WebService的基本概念、获取WSDL文件、阅读和理解WSDL文件、选... 目录前言一、理解WebService的基本概念二、获取WSDL文件三、阅读和理解WSDL文件四、选择对接

vue解决子组件样式覆盖问题scoped deep

《vue解决子组件样式覆盖问题scopeddeep》文章主要介绍了在Vue项目中处理全局样式和局部样式的方法,包括使用scoped属性和深度选择器(/deep/)来覆盖子组件的样式,作者建议所有组件... 目录前言scoped分析deep分析使用总结所有组件必须加scoped父组件覆盖子组件使用deep前言

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

Java调用Python代码的几种方法小结

《Java调用Python代码的几种方法小结》Python语言有丰富的系统管理、数据处理、统计类软件包,因此从java应用中调用Python代码的需求很常见、实用,本文介绍几种方法从java调用Pyt... 目录引言Java core使用ProcessBuilder使用Java脚本引擎总结引言python

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用

java如何调用kettle设置变量和参数

《java如何调用kettle设置变量和参数》文章简要介绍了如何在Java中调用Kettle,并重点讨论了变量和参数的区别,以及在Java代码中如何正确设置和使用这些变量,避免覆盖Kettle中已设置... 目录Java调用kettle设置变量和参数java代码中变量会覆盖kettle里面设置的变量总结ja

使用Vue.js报错:ReferenceError: “Vue is not defined“ 的原因与解决方案

《使用Vue.js报错:ReferenceError:“Vueisnotdefined“的原因与解决方案》在前端开发中,ReferenceError:Vueisnotdefined是一个常见... 目录一、错误描述二、错误成因分析三、解决方案1. 检查 vue.js 的引入方式2. 验证 npm 安装3.

vue如何监听对象或者数组某个属性的变化详解

《vue如何监听对象或者数组某个属性的变化详解》这篇文章主要给大家介绍了关于vue如何监听对象或者数组某个属性的变化,在Vue.js中可以通过watch监听属性变化并动态修改其他属性的值,watch通... 目录前言用watch监听深度监听使用计算属性watch和计算属性的区别在vue 3中使用watchE

python解析HTML并提取span标签中的文本

《python解析HTML并提取span标签中的文本》在网页开发和数据抓取过程中,我们经常需要从HTML页面中提取信息,尤其是span元素中的文本,span标签是一个行内元素,通常用于包装一小段文本或... 目录一、安装相关依赖二、html 页面结构三、使用 BeautifulSoup javascript

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义