• uni-app网络请求封装及发送


    在看本篇文章之前,请先至少学会独立完成vue2项目

    首先配置request.js

    1. const url_all = {
    2. 'DEV': 'http://localhost:8888', // 开发
    3. // 生产 'PRO': 'http://111.111.111.111:8080',
    4. }
    5. let BASEURL = url_all['DEV'] // 调整当前环境
    6. /*
    7. * 全局请求封装
    8. * @param path 请求路径
    9. * @param method 请求类型(GET/POST/DELETE等)
    10. * @oaram data 请求体数据
    11. * @param loading 请求未完成是是否显示加载中,默认为true
    12. */
    13. export default (path, method, data = {}, loading = true) => {
    14. // 获取存储token
    15. const token = uni.getStorageSync("token");
    16. if (loading) {
    17. uni.showLoading({
    18. title: "加载中",
    19. mask: true
    20. });
    21. };
    22. //根据token进行调用函数
    23. if (token != '') {
    24. return tokenRequest(path, method, data, loading, token)
    25. } else {
    26. return noTokenRequest(path, method, data, loading)
    27. }
    28. };
    29. // 无token时发送请求函数
    30. function noTokenRequest(path, method, data, loading) {
    31. return new Promise((resolve, reject) => {
    32. uni.request({
    33. url: BASEURL + path,
    34. method: method,
    35. data,
    36. success(response) {
    37. // console.log('%c响应拦截:', ' background:green', response);
    38. /* if (response.data.code === 3001) {
    39. // logout()
    40. } */
    41. /* if (response.data.code !== 20) {
    42. uni.showToast({
    43. icon: "none",
    44. duration: 4000,
    45. title: response.data.msg
    46. });
    47. } */
    48. console.log(response.data)
    49. resolve(response.data);
    50. },
    51. fail(err) {
    52. uni.showToast({
    53. icon: "none",
    54. title: '服务响应失败'
    55. });
    56. console.error(err);
    57. reject(err);
    58. },
    59. complete() {
    60. uni.hideLoading();
    61. }
    62. });
    63. });
    64. }
    65. // 有token时发送请求函数
    66. function tokenRequest(path, method, data, loading, token) {
    67. return new Promise((resolve, reject) => {
    68. uni.request({
    69. url: BASEURL + path,
    70. method: method,
    71. data,
    72. header: {
    73. "token": token
    74. },
    75. success(response) {
    76. console.log('%c响应拦截:', ' background:green', response);
    77. if (response.data.code === 40101) {
    78. // logout()
    79. }
    80. console.log(response.data)
    81. resolve(response.data);
    82. },
    83. fail(err) {
    84. uni.showToast({
    85. icon: "none",
    86. title: '服务响应失败'
    87. });
    88. console.error(err);
    89. reject(err);
    90. },
    91. complete() {
    92. uni.hideLoading();
    93. }
    94. });
    95. });
    96. }

    然后我们可以在api文件夹下的请求中引入刚刚已经封装好的request

    1. import request from '@/utils/request.js'; // 封装的request.js文件的位置
    2. // login
    3. export const login = (loginDTO) => {
    4. return request(`/tms-login/user/login`, 'POST', loginDTO)
    5. }

    最后在你的vue文件中使用这个请求

    1. methods: {
    2. // 登录
    3. login() {
    4. login(this.loginDTO).then(res => {
    5. uni.setStorageSync("token",res.data.token);
    6. if (res.code == 200) {
    7. uni.switchTab({
    8. url: "/pages/task/dispatch"
    9. });
    10. }else{
    11. alert("登录失败");
    12. }
    13. })
    14. }
    15. },

    至此,你已经学会了uni-app是如何发送请求了!是不是和vue十分相似,快去试试吧!

  • 相关阅读:
    Linux扩展篇之Shell编程一(Shell 概述)
    6、堆(新生区,永久区,堆内存调优(jvm调优))
    微信小程序-常用的视图容器类组件
    分享3个深度学习练手的小案例
    力扣--有效的括号
    docker——重启策略
    GBDT模型详解
    231108 C语言else if和MATLAB elseif
    P2607 [ZJOI2008] 骑士
    cenos自动启动tomcat
  • 原文地址:https://blog.csdn.net/weixin_66196770/article/details/136670878