当前位置:   article > 正文

uniapp如何封装请求方法_uni-app中如何封装请求

uni-app中如何封装请求

1,LanBowanShop/utils/request.js

  1. import cofig from './config.js'
  2. export default (url,data={},method='GET')=>{
  3. return new Promise((resolve,reject)=>{
  4. uni.request({
  5. url:cofig.baseUrl+url,
  6. data,
  7. method,
  8. success(res) {
  9. resolve(res.data);
  10. },
  11. fail(err) {
  12. reject(err);
  13. }
  14. })
  15. })
  16. }

2,LanBowanShop/utils/config.js:

  1. export default {
  2. baseUrl: 'http://localhost:7788'
  3. }

3,测试封装好的请求方法

   请求接口:http://localhost:7788/getIndexData

  1. <script>
  2. //1.导入封装好的请求数据方法
  3. import http from '@/untils/request.js';
  4. export default {
  5. data() {
  6. return {
  7. title: 'Hello'
  8. }
  9. },
  10. methods: {
  11. //2.请求首页数据
  12. async getIndexData() {
  13. let {
  14. data: res
  15. } = await http('/getIndexData');
  16. console.log(res);
  17. }
  18. },
  19. created() {
  20. // 3.在声明周期函数中使用
  21. this.getIndexData()
  22. }
  23. }
  24. </script>

此时小程序端已正常运行,h5页面产生了跨域,

因为我们后台的端口是localhost:7788,

客户端的地址:http://localhost:8080/#/pages/index/index

所以产生了跨域

 

小程序里不存在跨域,但是如果是H5的项目存在跨域:

根目录下创建 vue.config.js:

  1. module.exports = {
  2. devServer: {
  3. proxy: {
  4. '/api': {
  5. target: 'http://localhost:7788',
  6. ws: true,
  7. changeOrigin: true,
  8. pathRewirte:{ //路径重写
  9. '^/api':''
  10. }
  11. },
  12. '/foo':{
  13. target:'http://localhost:3001'
  14. }
  15. }
  16. }
  17. }

修改发送请求:

page/index.vue

  1. // 获取首页数据
  2. methods: {
  3. //2.请求首页数据
  4. async getIndexData() {
  5. // #ifdef MP-WEIXIN
  6. let {data:res} = await http('/getIndexData'); //小程序
  7. // #endif
  8. // #ifdef H5
  9. let {data:res} = await http('/api/getIndexData'); //h5
  10. // #endif
  11. console.log(res);
  12. }
  13. },

untils/request.js

  1. import config from './config.js';
  2. export default (url, data = {}, method = 'GET') => {
  3. return new Promise((resolve, reject) => {
  4. uni.request({
  5. // #ifdef MP-WEIXIN
  6. url: config.baseUrl + url, //小程序
  7. // #endif
  8. // #ifdef H5
  9. url,
  10. //#endif
  11. data,
  12. method,
  13. success: (res) => {
  14. resolve(res)
  15. },
  16. fail: (erro) => {
  17. reject(erro)
  18. }
  19. })
  20. })
  21. }

 如果在h5中还是不行,

 显示请求成功,但是数据是html样式的

 

 

  1. "h5": {
  2. "title": "Test",
  3. "devServer": {
  4. "port": 8082,
  5. "disableHostCheck": true,
  6. "proxy": {
  7. "/api": {
  8. "target": "http://localhost:7788",
  9. "changeOrigin": true,
  10. "secure": false,
  11. "pathRewrite": {
  12. "^/api": ""
  13. }
  14. }
  15. }
  16. }
  17. }

这样h5获取到的数据就是正常的了

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/318530
推荐阅读
相关标签
  

闽ICP备14008679号