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

API接口的封装流程简要

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    第一步:* }, X  [& P: g$ n: g$ h

      o) H+ e' {, q, p3 M* _  c; _首先引入axios" m7 x1 F# \3 F3 E: V6 x

    4 {4 b- i; R# u然后创建两个文件夹api和http
    # m5 P- u  N( a* i
    1 _$ \! Y5 j$ Q0 F. f6 }' lhttp.js 里面的
    / H3 U3 ?  ?  T! ?+ P3 l8 j% `' j/ h
    复制代码
    # x2 M% d1 I0 ~. I6 b, d1 import axios from ‘axios’;//引入axios6 y3 d5 O2 ~& w( G$ k7 ~( y
    2
    " m# P5 u6 q, t8 O) t1 N3 //环境的切换 开发环境(development)使用的是测试接口 和 生产环境(production)使用的是上线接口% i' B5 r% G# q0 o
    4 if(process.env.NODE_ENV==‘development’){
    , P( r4 j9 K7 Y/ M- G5 //设置默认路径
    ( u8 x3 h/ x1 W5 y6 axios.defaults.baseURL=‘http://120.53.31.103:84/’
    ( P* ]4 [3 T. o" H, j9 T! R7 }
    * K( z) k2 U$ I5 z) Z$ e8 if(process.env.NODE_ENV==‘production’){( R+ f  S5 N7 B
    9 axios.defaults.baseURL=‘https://wap.365msmk.com/’+ Z# ]! v, z7 v3 f( e0 K
    10 }
    5 X# I9 i7 d# H, Z11 axios.defaults.timeout=5000;//加载不出来5秒之后就是加载失败
    ( U8 `, l& g- L0 N& b12 axios.interceptors.request.use(
    9 ?0 @: B7 m# k4 w13 config=>{
    # J; }8 ^$ P$ {$ e14 config.headers={DeviceType:‘H5’}//可每次发送请求之前的逻辑处理 比如判断token& ~; W7 n1 Y  X- F
    15 return config;  \! M$ ?' v5 k+ P
    16 }
    0 C3 _; }& e9 G$ ]  B17 )6 s' N# u* I% m% M& H7 v6 v2 Z7 j
    18 // axios.interceptors.response.use(+ q% ]* P5 m+ Z2 s* x6 V2 e: z
    19 // response=>{% c3 a$ i$ K5 }% b
    20 // return response;
    ) }; z. n8 ]( B; b21 // },, Y2 Z( v- c, i5 d! ]! P0 h
    22 // error=>{
    3 f& A' z% b7 x1 I: |7 ]23 // if(error.response.status){
    9 X: ], r: Y/ U7 ~3 {% P24  f% c( h; U* r9 B+ E# Z- }) Q, O
    25 // }# \# F, ~* F: V2 U7 ]
    26 // }
    : X0 g( \; c5 d! g27 // )
    0 P- D8 |) o2 ~7 c0 k, P+ `$ b28
    5 ^  Q3 O0 c0 R; W29 // 使用promise返回axios请求的结果: Z, Y  X  R1 ]9 P
    30 export function get(url, params) {) d% u$ @" F4 p; i4 c2 k# F3 E
    31 return new Promise((resolve, reject) => {. |1 z! {, A8 q: ~
    32 axios.get(url, {, D/ g! k& V3 e3 e# o; i3 A( I  v
    33 params:params
    ' s, \6 m* z: {! |% i34 }).then(res => {. P4 k0 X! O, l  I
    35 resolve(res)' ~* r) n  H& M2 z# }+ y& V
    36 }).catch(err => {
    8 X4 w& i* ^& w$ V6 F" R37 reject(err)
    0 ]7 t5 v0 \5 i6 S8 b6 N38 })
    6 \# P" Q: S( L0 }) H. Q1 ~1 C39 })) b  o: v2 n2 x1 d8 A, V
    40 };5 q9 B- s/ I. j, \/ w4 W
    41+ @/ b% ]* _) F" `* U7 L
    42 export function post(url,params){
    3 g+ P9 O4 ~' ^# c9 Q" i8 t43 return new Promise((resolve,reject)=>{
    1 \+ G# {- M# c$ c8 c" u; v44 axios.post(url,params).then(res=>{7 ~9 F! N4 |8 B6 a
    45 resolve(res.data)
    ; q% G) A$ |5 C- ]+ j! h46 }).catch(err=>{" z8 H& a' G# F* l- U" L! U$ h
    47 reject(err.data)
    * R/ C( i  V; s1 B2 N48 })
    % N7 q6 N( |, O49
    & ~9 C# x, _! R& N1 A6 H" C! j50 })1 R9 G0 i9 J- b( x
    51 }6 a. S" M/ U6 O4 ~
    复制代码/ O, c1 y& l% z
    api.js里面的: h+ P- \" W. C, h0 s' m" g2 |
    ( V. P6 ~, e3 y2 m
    复制代码
    ) }. a9 \" H0 b/ i7 v! gimport { get, post } from “…/http/http” //引入封装好的get和post方法+ B/ Z1 ]0 i$ s% J$ ]
    // 封装请求的方式5 _- F  u7 J) k# [( M
    export function getBanners() {//轮播
    1 F+ X$ I  t1 {5 Y+ L! Lreturn get(‘api/app/banner’)
    ( W& U1 U, [9 ^/ X' ?8 ^) n}! D+ v$ G+ g/ g* g- H
    / M6 O) _+ `) a7 }
    export function getIndex(){//首页数据
    4 a* i$ n2 Z) nreturn get(‘api/app/recommend/appIndex’)
    ' t- y5 w; F+ F6 s0 j6 g. d}
    2 l. n" ?. T$ A9 B) _9 O9 Z复制代码
    ) H) x: m' f2 c* k' P  q, r然后在vue里面的文件应用& s9 Z/ W3 T8 O( c$ k% @

    5 N! V6 g1 w/ F6 o$ W0 T复制代码
    8 N& _  R- q( {  kimport { getBanners, getIndex } from “…/api/api”;//引入api里面定义的方法
    % l: D. [0 H8 V4 Y2 t- S
    , V; m, K; [9 w5 I1 D( N* g. Pasync mounted() {
    4 r' P! l5 N/ }. W" u! kvar swiperr = await getBanners();) H& Y3 z2 M" t& Y: i5 C
    console.log(swiperr.data.data);
    , ?5 ]" Y4 j: s$ A6 S3 M9 u% ^, r0 [this.swipers = swiperr.data.data; //轮播图渲染/ N, ~4 i( P6 L; k3 ]

    2 @( z6 G$ Q8 F. l9 w; `var strr = await getIndex();3 @8 o6 G! a0 y2 t5 j
    console.log(strr); //明星讲师渲染
    # k! J: ?0 k- ethis.strs = strr.data.data;5 @7 s: C: @9 D8 A1 a
    console.log(this.strs);* C* z1 _. z( f0 j+ c- v! P
    1
    * j) C$ u1 F2 {" n# J2
    " D( i% }/ q5 u+ t3
    4 m2 z5 i" e/ V2 p41 |3 a+ X* y( C/ t" a5 n. g$ w" I3 b
    }
    . T8 i  c& N3 Q0 `. {0 e
    9 k' ]1 c4 E% T* y$ z
  • 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 20:48 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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