• request 请求类封装


    一:前言:

    request 请求数据的三种方式

    request 请求数据的第一种方式  需要在methods当中定义一个方法,然后在onLoad()方法当中 , 监听页面加载的时候,当页面进行加载,调用该方法,进行数据的获取

    但是这里获取到的数据是没有进行加工的,获取到的都是当前页面当中的所有数据

    1. onLoad(){
    2. // 初始化事件,调用后台数据获取到数据
    3. this.init()
    4. }
    5. methods: {
    6. //初始化事件,获取顶部选项卡
    7. //request的第一种请求方式
    8. init(){
    9. uni.request({
    10. url: 'http://ceshi3.dishait.cn/api/index_category/data',
    11. method: 'GET' ,
    12. data: {},
    13. success: res =>{
    14. console.log(res)
    15. },
    16. fail:()=>{
    17. console.log('请求失败')
    18. },
    19. complete:() =>{
    20. console.log('请求完成')
    21. }
    22. });
    23. },
    24. }

    request 请求数据的第二种方式  是通过promise 方法当中的  .then()  方法进行数据的获取

    1. onLoad(){
    2. // 初始化事件,调用后台数据获取到数据
    3. this.init()
    4. }
    5. methods: {
    6. //初始化事件,获取顶部选项卡
    7. //request的第二种请求方式 promise 使用的是 .then 方法进行获取
    8. init(){
    9. uni.request({
    10. url: 'http://ceshi3.dishait.cn/api/index_category/data',
    11. method: 'GET' ,
    12. }).then(data => {
    13. let [error , result] = data
    14. console.log(error);
    15. // 请求的数据出现失败的时候,返回的数据信息
    16. if(result.statusCode !== 200){
    17. //请求的信息出现错误的时候,
    18. return console.log(result.data.msg)
    19. }else {
    20. console.log(result);
    21. }
    22. })
    23. },
    24. }

    request 请求数据的第二种方式  是通过async 和 await 来进行数据的获取

    1. onLoad(){
    2. // 初始化事件,调用后台数据获取到数据
    3. this.init()
    4. }
    5. methods: {
    6. //初始化事件,获取顶部选项卡
    7. //request的第三种请求方式 async await
    8. async init(){
    9. let [error, result] = await uni.request({
    10. url: 'http://ceshi3.dishait.cn/api/index_category/data',
    11. method: 'GET',
    12. });
    13. console.log(error);
    14. // 请求的数据出现失败的时候,返回的数据信息
    15. if (result.statusCode !== 200) {
    16. return console.log(result.data.msg) //请求的信息出现错误的时候,
    17. } else {
    18. console.log(result);
    19. }
    20. },
    21. }

            以上三种数据的请求方式都可以获取到url里面的数据信息

    二:request的封装和使用 (未对get和post 进行封装)

    通过以上三种request 的请求,我们可以对request类数据请求进行一个简单类型的封装,

    封装代码如下(可能存在不同)

    该文件是在common底下lib文件夹下面的request.js文件

    1. export default {
    2. //全局配置
    3. common: {
    4. baseurl: "http:// ceshi3.dishait.cn/api",
    5. //请求头header是告诉浏览器你发送的数据格式是什么,浏览器接收后做相对应的处理并返回你要的数据格式!!!
    6. header: {
    7. 'Content-Tlype ': ' application/json;charset=UTF-8 ',
    8. 'Content-Type': 'application/x- www-form-urlencoded '
    9. },
    10. data:{},
    11. method:'GET',
    12. dataType:'json'
    13. },
    14. //请求返回 promise
    15. request(options = {} ){
    16. //组织参数
    17. options.url = this.common.baseurl + options.url
    18. options.header = options.header || this.common.header
    19. options.data = options.data || this.common.data
    20. options.method = options.method || this.common.method
    21. options.dataType = options.dataType || this.common.dataType
    22. //请求数据
    23. return new Promise ((res,rej)=>{
    24. // 请求前
    25. // 在此处,我们可以进行token的验证操作
    26. //请求中
    27. uni.request({
    28. ...options,
    29. success:res =>{
    30. //服务端失败
    31. if(result.statusCode !==200){
    32. uni.showToast({
    33. title:result.data.msg || '服务端失败',
    34. icon:"none"
    35. });
    36. return rej()
    37. }
    38. //服务端数据请求成功
    39. let data = result.data.msg
    40. res(data)
    41. },
    42. fail:(error) =>{
    43. uni.showToast({
    44. title:error.errMsg || '请求失败',
    45. icon:"none"
    46. });
    47. return rej()
    48. }
    49. })
    50. })
    51. },
    52. }

    当我们没有对get或者poet请求进行封装的时候,我们在使用的时候需要进行如下的书写。

    在应用的时候,我们需要先引用该文件,在可以进行使用

    1. import $H from '@/common/lib/request.js';
    2. onLoad() {
    3. // 初始化事件,调用后台数据获取到数据
    4. this.init()
    5. },
    6. methods: {
    7. // 封装完成之后,进行数据的请求
    8. init(){
    9. $H.request({
    10. url:"/index_category/data"
    11. }).then((res)=>{
    12. console.log("请求成功")
    13. console.log(res)
    14. }).catch(()=>{
    15. console.log("请求失败")
    16. })
    17. },
    18. }

    三:request的封装和使用 (对get和post 进行封装)

    1. export default {
    2. //全局配置
    3. common: {
    4. baseurl: "http:// ceshi3.dishait.cn/api",
    5. //请求头 ,header是告诉浏览器你发送的数据格式是什么,浏览器接收后做相对应的处理并返回你要的数据格式!!!
    6. header: {
    7. 'Content-Tlype ': ' application/json;charset=UTF-8 ',
    8. 'Content-Type': 'application/x- www-form-urlencoded '
    9. },
    10. data:{},
    11. method:'GET',
    12. dataType:'json'
    13. },
    14. //请求返回 promise
    15. request(options = {} ){
    16. //组织参数
    17. options.url = this.common.baseurl + options.url
    18. //这里的header头部需要在验证token之后才可以进行使用
    19. options.header = options.header || this.common.header
    20. options.data = options.data || this.common.data
    21. options.method = options.method || this.common.method
    22. options.dataType = options.dataType || this.common.dataType
    23. //请求数据
    24. return new Promise ((res,rej)=>{
    25. // 请求前
    26. // 在此处,我们可以进行token的验证操作
    27. //请求中
    28. uni.request({
    29. ...options,
    30. success:res =>{
    31. //服务端失败
    32. if(result.statusCode !==200){
    33. uni.showToast({
    34. title:result.data.msg || '服务端失败',
    35. icon:"none"
    36. });
    37. return rej()
    38. }
    39. //服务端数据请求成功
    40. let data = result.data.msg
    41. res(data)
    42. },
    43. fail:(error) =>{
    44. uni.showToast({
    45. title:error.errMsg || '请求失败',
    46. icon:"none"
    47. });
    48. return rej()
    49. }
    50. })
    51. })
    52. },
    53. //get 请求
    54. get(url , data = {} , options = {}){
    55. options.url = url
    56. options.data = data
    57. options.method = "GET"
    58. return this.request(options)
    59. },
    60. //post 请求
    61. post(url , data = {} , options = {}){
    62. options.url = url
    63. options.data = data
    64. options.method = "POST"
    65. return this.request(options)
    66. }
    67. }

    请求方式也封装成功之后,对数据的请求的两种获取方式如下:

    方式一:

    1. import $H from '@/common/lib/request.js';
    2. onLoad() {
    3. // 初始化事件,调用后台数据获取到数据
    4. this.init()
    5. },
    6. methods: {
    7. //封装get请求之后,进行数据的请求 获取方式一
    8. async init(){
    9. let data =await $H.get("/index_category/data")
    10. // 判断里面是否存在数据
    11. //下方就是对获取到的数据进行加工提炼,将相应的数据进行获取
    12. if(data){
    13. //初始化tabBars
    14. this.tabBars = data.category
    15. console.log(data.category)
    16. }
    17. },
    18. }

    方式二:

    1. import $H from '@/common/lib/request.js';
    2. onLoad() {
    3. // 初始化事件,调用后台数据获取到数据
    4. this.init()
    5. },
    6. methods: {
    7. //封装get请求之后,进行数据的请求 获取方式二:
    8. init(){
    9. $H.get('/index_category/data').then((res)=>{
    10. //初始化tabBars
    11. this.tabBars = res.category
    12. console.log(res.category)
    13. })
    14. },
    15. }

    后续会加上token验证之后,对其封装进行对应的补充

  • 相关阅读:
    基于个性化推荐的图书网站设计与实现
    Neo4j入门教程2(看不懂评论区随便骂)
    Java集合框架:List、Set、Map类型及泛型详解
    还未入职,这位将来的博导为学生规划了一条高效学习之路
    compile Python missing or unusable error while cross compiling GDB
    推荐一个我朋友的salesforce学习网站
    仓库管理系统源代码集合,带图片展示和网站演示
    Js中一些数组常用API总结
    P10.2机器学习笔记--李宏毅(self-attention机制)
    【 安全】什么是CSRF攻击?如何避免?开发的时候怎么预防?
  • 原文地址:https://blog.csdn.net/m0_72313625/article/details/128192139