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

API接口的封装流程简要

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    第一步:
    / e# @; j& [' h. m" W
    $ h: I5 S8 S" c首先引入axios( z3 o' z3 Q0 B; o# g- m" k
    9 y. Q, P# D4 O& L
    然后创建两个文件夹api和http5 t0 |; p; u8 @0 ^, Z; N/ E* \

    " q+ ?8 B, B8 s" Ihttp.js 里面的; {  Y9 O% v! e6 G. Y- Z

    6 r4 M# z+ C' t, R' g0 p- R0 u复制代码
    * i. F% ~4 }6 e/ a+ D3 S1 import axios from ‘axios’;//引入axios. K: K6 y0 ^  E" y+ X# ^
    2
    * V' E6 @) w' g3 //环境的切换 开发环境(development)使用的是测试接口 和 生产环境(production)使用的是上线接口- f1 p2 Y2 p1 c& X. L& s8 {) i9 s
    4 if(process.env.NODE_ENV==‘development’){
    2 j, T; i" |  ]1 `! }4 y, i; I8 Y2 x5 //设置默认路径1 Q8 |. L' W" J5 T% t
    6 axios.defaults.baseURL=‘http://120.53.31.103:84/’
    - r5 Q9 n, o1 }3 z( B1 y. t3 c7 }' {2 f: G2 W8 u5 n" R; H
    8 if(process.env.NODE_ENV==‘production’){( \. n# P  Y" n4 ^  M
    9 axios.defaults.baseURL=‘https://wap.365msmk.com/’( y$ w3 m" y8 t" D
    10 }# Q8 b2 d$ k6 ]. y6 P2 a
    11 axios.defaults.timeout=5000;//加载不出来5秒之后就是加载失败
    5 }) g( F3 m3 e9 t12 axios.interceptors.request.use(0 {3 \/ W4 ^! m, R' o, S2 ^: h
    13 config=>{
    5 s! {% h0 P, p) ]. p8 h( @14 config.headers={DeviceType:‘H5’}//可每次发送请求之前的逻辑处理 比如判断token
    ; ~/ z# h# V: S: v0 `15 return config;$ @& n  s7 M& S, }! q4 X$ e
    16 }
    # _& r; D7 J5 l$ |( H17 )
    : d0 i. U1 U. C  H# S18 // axios.interceptors.response.use(
    % a6 m7 s# {) P. _. G  @1 G  T19 // response=>{8 Q$ J  _9 I0 \$ |& Z: B
    20 // return response;# v7 E9 G# y3 w1 B/ y8 ^! _8 M
    21 // },) L8 O- C; n( x8 I* Z
    22 // error=>{
    5 X( ~' D9 T3 d0 y9 O& `1 U0 F23 // if(error.response.status){) p( _5 F+ Z- d
    24
    + a/ Q# {; e( j( c25 // }
    ( N1 U, b( Z' k0 i/ x7 I# C1 T26 // }
    # D3 H; D* q  }2 J, C27 // )" _: t  i7 m- e& h; x- _
    28$ {) H  s! z3 m1 N2 P9 h$ ?
    29 // 使用promise返回axios请求的结果1 o5 ]  I9 i# a/ I7 S* q
    30 export function get(url, params) {
    1 d& d0 t/ a8 p' Y" z31 return new Promise((resolve, reject) => {/ G; i) Y4 U- ?/ u
    32 axios.get(url, {, u4 T! M8 o! ]
    33 params:params
    2 l, t7 u9 Z3 u2 r' q; ~34 }).then(res => {1 h8 d' I# K* B4 O  t/ y: }, m/ s
    35 resolve(res)- Z: S* {$ E7 u2 C0 `
    36 }).catch(err => {* V) v" v9 |4 Z4 T4 P* T
    37 reject(err)
    * e. u* |- l! `5 C4 c38 })5 Q% p: b0 P* b7 V
    39 })9 d# A+ b" V% x1 D: G/ f
    40 };
    0 y4 b3 B" S2 n% b) j41
    ' l- a$ F) Z, @  A! U' T& Z! Q5 ]: W' h42 export function post(url,params){
    3 k9 q: U1 `9 z6 X. ]2 n+ a$ m) m9 v43 return new Promise((resolve,reject)=>{% L% i% d9 C- T
    44 axios.post(url,params).then(res=>{8 R9 z2 v6 A! d# A6 _) e
    45 resolve(res.data)1 I, h0 F/ A  [/ Y9 ?' l# m$ `+ ?4 H
    46 }).catch(err=>{
    & r5 V) {+ q  q1 j( ]" ~47 reject(err.data)* W( f# ~: z! x' h2 b
    48 })
    : ?) T/ c8 o. o9 Q) `7 v/ @49
    + h6 P( b" `' S, _% E( t1 }50 })2 P+ z2 R  M3 E& K+ R1 w% s
    51 }
    4 {6 D  b8 p! Z8 [. x9 C3 i复制代码
    7 m# V9 s9 i7 \* f$ k" m0 `: ^api.js里面的9 C/ g) K$ `" h+ Q, |6 `
    ) G- _. `. `* k2 d: _
    复制代码
    2 g3 f# |  U0 oimport { get, post } from “…/http/http” //引入封装好的get和post方法- a# c1 p: Q+ H2 Y- H
    // 封装请求的方式6 e# h) C( C2 e  ^, a
    export function getBanners() {//轮播
    8 w$ T9 @2 v# t) i4 Yreturn get(‘api/app/banner’)3 N6 e) F4 c1 n5 H" T9 E) ?
    }
    - U! t" _; k, P( `- G
    5 }0 r$ {: r9 ?& [. J& Nexport function getIndex(){//首页数据
    4 F  u  d' o/ a( Greturn get(‘api/app/recommend/appIndex’)
    0 _0 I' U" c* X" u8 Y9 Z}
    4 `" t% |- G1 Z) P/ a复制代码& }; B; x; m) Q. N
    然后在vue里面的文件应用- X- v- ]8 r3 J/ J3 r

    + d( d  Z, j$ E$ p5 g复制代码
    . \& T. T) R6 d& ?; q. Gimport { getBanners, getIndex } from “…/api/api”;//引入api里面定义的方法9 ~8 t( s$ z3 R+ S

    # U7 f& U: H8 Xasync mounted() {
    / c9 ]# c1 k& D! z% p# Y  f, Fvar swiperr = await getBanners();$ S9 v& q# u" m( |; c( m' b; ^
    console.log(swiperr.data.data);; n6 H' N5 s, P# U+ I0 V
    this.swipers = swiperr.data.data; //轮播图渲染
    ) b0 E8 t7 L, d$ ?/ O2 L6 i  _$ s9 w+ u
    var strr = await getIndex();
    9 G' P1 M- @3 M. fconsole.log(strr); //明星讲师渲染
    ; ^2 p8 R( X9 xthis.strs = strr.data.data;
    - b0 S; n4 U5 s. V8 l! w) c( \' bconsole.log(this.strs);
    * h* m" z+ P3 t$ `6 H& N: B0 Z1
      C* p0 x1 Q: S8 f0 f) F2# t# H9 z: S8 I. |6 y- {+ C1 [
    3
    ; n* T: B" e5 ^7 P4+ M5 j- i7 [3 J% I1 a
    }
    ' L/ [0 n  _2 w! v2 B( n% {4 k0 s
    / M2 l' G' ^6 E; J7 m
  • TA的每日心情
    开心
    2020-8-5 15:09
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-11-24 21:20 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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