找回密码
 注册
关于网站域名变更的通知
查看: 634|回复: 1
打印 上一主题 下一主题

API接口的封装流程简要

[复制链接]
  • TA的每日心情
    奋斗
    2020-9-2 15:06
  • 签到天数: 2 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2020-10-20 13:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    第一步:/ I8 T- F. Y/ z
    + g8 E2 c; U5 d, \3 X0 K
    首先引入axios1 H9 y0 _" V8 i9 B9 N2 R
    $ c/ z% j9 T2 ?- \) U. }. ?$ U; r5 F
    然后创建两个文件夹api和http- A: `6 N  K1 ?- T* j( S6 B2 @: Z
    4 }& P) q. J4 o- R' Y8 E  ~  p
    http.js 里面的
    - ~5 F' \' c! m
    - Z; N+ x' _' {) V; n0 _复制代码5 j" k$ ?% b/ Z8 Y1 d- a
    1 import axios from ‘axios’;//引入axios$ x" _: w3 y7 q. V# m
    2
    9 G+ G; v) E/ p, U1 r# a6 Q4 l6 t3 //环境的切换 开发环境(development)使用的是测试接口 和 生产环境(production)使用的是上线接口
    : O9 Y2 l& c) V+ X* k" K5 R9 |4 if(process.env.NODE_ENV==‘development’){9 c' A: g3 ~) @' [/ ]- N
    5 //设置默认路径5 @- d3 I! h8 Z
    6 axios.defaults.baseURL=‘http://120.53.31.103:84/’
    6 H- B8 x! O  L% L# I7 }
    , r/ d0 m7 c0 z# @; v8 if(process.env.NODE_ENV==‘production’){+ Q0 {% e& U5 X* m: W5 x
    9 axios.defaults.baseURL=‘https://wap.365msmk.com/’
    ' C* v0 N* l4 ]7 H" z4 Y10 }4 M& q8 |, ^  Y" _( g
    11 axios.defaults.timeout=5000;//加载不出来5秒之后就是加载失败
    3 M( k2 Z+ B# V1 |12 axios.interceptors.request.use(4 e$ n6 a8 t9 {6 t
    13 config=>{- g! V8 v7 {) L9 _2 Y* v* m. h
    14 config.headers={DeviceType:‘H5’}//可每次发送请求之前的逻辑处理 比如判断token. r- A3 G( M0 O, X
    15 return config;
    ' U4 R& `- W5 K' Y1 s% u  w" `16 }
    ; A9 I6 |$ n. D! w17 )1 b5 n2 y* W1 c  g6 N8 f2 ^
    18 // axios.interceptors.response.use(
    4 h, ^0 _- I9 d; n  Z& O19 // response=>{* S! Z) E) H0 Z6 \
    20 // return response;
    % T, y( P/ ~, @+ R& u! J4 i21 // },
    ( L. E' E! f( F0 a( U& T22 // error=>{7 x8 B9 x4 o) W" n8 W# r
    23 // if(error.response.status){
    ( x7 d' P4 Q" f8 L* @2 u24$ ^2 _, e; |% v( [! h5 F0 h& a
    25 // }
    / K; z4 E7 `. ?7 \* @) M2 {26 // }
    - \8 F4 H' C0 r* B; c7 |+ u27 // )
    % c; Z9 W, v9 N" [' q) a28
    % ?- K* e1 D0 y6 z! k$ i, _29 // 使用promise返回axios请求的结果* P& P1 ?$ V  H
    30 export function get(url, params) {
    7 E( c: [8 b! U3 S2 y% W7 @31 return new Promise((resolve, reject) => {
    9 y: r. @% _2 m/ n. i9 l* n7 _32 axios.get(url, {3 G$ `( F, @0 D- e
    33 params:params
    $ \  a0 g9 m9 b+ Z3 I+ \34 }).then(res => {
    % c1 q6 y% y6 m35 resolve(res)$ [' U, }" g2 q6 l# ?" k! F6 o
    36 }).catch(err => {
    ' z- h2 |! d2 Z! c/ ~/ o( M37 reject(err)
    + y+ Y  p+ v$ Y, Y38 })4 g+ [1 D/ e6 s3 o3 y
    39 }); T8 w0 w6 h. f  h' t" H/ l
    40 };
    6 V8 |, T- C" P3 Y3 D& _( y41# }( r" I; {" r- Y% H
    42 export function post(url,params){+ e- q4 A& ~, f# M
    43 return new Promise((resolve,reject)=>{
    + N+ F7 W) `: S3 Q% F. Q5 b44 axios.post(url,params).then(res=>{
    7 n2 S- u4 D# b: Z4 ^- B45 resolve(res.data)& W% b8 o/ P$ f- O' U
    46 }).catch(err=>{
    , S& {" ?& P0 c: I/ g# a47 reject(err.data)) b. l: Y  `6 B1 s4 G
    48 })7 g' }- k  u3 v7 T0 m& [
    499 T- `% a# d7 @+ c4 J
    50 })
    6 t" R: J( v6 t0 g7 x: |2 g, E51 }8 C/ F6 x. b5 H6 |; Q+ [
    复制代码+ u3 E! l2 c# }7 J$ l& E
    api.js里面的
    2 L- R0 \% V3 a. t4 I9 u3 J/ |4 {, W7 X' p% K8 K! k4 @
    复制代码- K* d# n" ~3 T
    import { get, post } from “…/http/http” //引入封装好的get和post方法
    5 w" O! F4 ^9 m( u% o6 a$ A* y6 T" n// 封装请求的方式3 q2 F% Y3 T$ a7 f* c- K4 x
    export function getBanners() {//轮播& u% n& L4 q; U# r" b- c: p& v
    return get(‘api/app/banner’)
    % a/ Q2 C, h1 |. A) q) T6 ]}
    8 A: k' i# l. f& g, o  \
    2 ?' D3 h+ w( `7 R7 a' E- E6 Y5 rexport function getIndex(){//首页数据) A3 A  L2 `$ A
    return get(‘api/app/recommend/appIndex’)$ a1 y7 n+ {8 N8 e: s9 T
    }
    7 Y% ?" Z/ Q5 j) s. \$ }) T7 r: U复制代码
    * n  }( k$ w% b5 X然后在vue里面的文件应用% J. ?" e3 U6 I, `7 p2 Z

    & u% f0 R) F" I复制代码
    9 Y7 C; w" C- B5 |import { getBanners, getIndex } from “…/api/api”;//引入api里面定义的方法
    ! W" {% F% a$ r% W/ c9 ~( D+ \7 j4 _1 Z' o" n: Q& H
    async mounted() {8 B  y* ~) U6 i' H
    var swiperr = await getBanners();, f* \/ z0 l( T- ^
    console.log(swiperr.data.data);- f$ c2 K# x, A+ u4 l
    this.swipers = swiperr.data.data; //轮播图渲染8 \' f$ f, z; t: o

    + @5 E/ t* i/ [/ }% Avar strr = await getIndex();
    % V+ X; x2 r  C  w+ l) iconsole.log(strr); //明星讲师渲染
    ( m  ?0 S. M' uthis.strs = strr.data.data;( E4 |# l# X! S
    console.log(this.strs);
    5 J* z" u1 l3 T7 K1
    " s- F. u9 i2 a/ h  ?( Z2! r8 a' F+ Q( i3 K0 j8 Y! Z+ a
    3: ?* k, H, E! W0 H, Q2 b
    4  S& x2 {. ~1 S2 G: }# T8 J* G
    }' b& M( _3 O4 E0 M" t& f

    1 W- b6 H2 }3 J2 M9 @0 n; k* @% O0 @' p
  • TA的每日心情
    开心
    2020-8-5 15:09
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-10-20 13:57 | 只看该作者
    端口配置呢  有没有可供参考的
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-7-19 09:48 , Processed in 0.093750 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表