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

API接口的封装流程简要

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    第一步:
    ; i) R5 z& C. o, J+ N8 J1 I( z
    : e! G9 h: {* ~7 y) x首先引入axios3 I3 l# r  F. j3 X  s1 S9 k, ]
    ! J  q4 N1 i/ u5 g. F2 c
    然后创建两个文件夹api和http; y6 v/ d1 S8 A( Z5 P
    , |. C5 n8 J4 h& c
    http.js 里面的& a/ l3 ^) T, u- k0 R" D' J
    1 F9 H$ O: R( y; S
    复制代码% b, E/ e% V6 m6 B
    1 import axios from ‘axios’;//引入axios1 e. E8 S, }: V* d$ m4 K) O9 A; x
    2
    & a  R7 B- h" P* ?" A" r3 //环境的切换 开发环境(development)使用的是测试接口 和 生产环境(production)使用的是上线接口
    9 U) M5 K9 R( O4 if(process.env.NODE_ENV==‘development’){; N- u# P! R0 S# o& g, S
    5 //设置默认路径
    : A- \$ f' {9 d$ d. E, c6 axios.defaults.baseURL=‘http://120.53.31.103:84/’
    / d+ r3 u2 y3 z: l+ [' a7 }4 e5 C# R/ ^* G$ s
    8 if(process.env.NODE_ENV==‘production’){$ s; i9 c" w8 V1 j
    9 axios.defaults.baseURL=‘https://wap.365msmk.com/’$ o4 c. ^6 s* k5 x  c8 w( W
    10 }
    1 w; L  h# L4 u. R+ X11 axios.defaults.timeout=5000;//加载不出来5秒之后就是加载失败* f9 X% W" P0 A3 X' ~8 H+ Y2 t  K
    12 axios.interceptors.request.use(
    ' r: B. r; f/ V, U! c/ j) C13 config=>{. _6 Y0 ^5 U. z5 w& A
    14 config.headers={DeviceType:‘H5’}//可每次发送请求之前的逻辑处理 比如判断token& f2 u6 J- }$ `6 ?" A
    15 return config;2 |: |% z+ T- n7 d1 `
    16 }' P( e. }( l& K- Q8 a, ~) g
    17 )0 b% h8 F, v7 C" m; ^# |# T
    18 // axios.interceptors.response.use(
    , v& o" ?8 q% K! P19 // response=>{
    * M5 `9 }: \$ C# u0 q3 Z: e20 // return response;
    2 |( u% B6 W9 Q) E/ T21 // },% p# R6 I  t+ J' s
    22 // error=>{, {1 u( }; a9 B4 o# C4 E' z
    23 // if(error.response.status){
    8 V# |1 B; ~7 p3 `( h1 H24
      V  d/ o: Y6 Q& M) T; q8 }25 // }$ s2 ?, z$ s2 W( B# Q( D
    26 // }
    , y: I9 n' ^. h27 // )
    3 T( }& p1 l) I- o7 \! W% E282 N2 Y& X0 J, H! p' _" ~% x
    29 // 使用promise返回axios请求的结果3 \4 q0 ^* M& S8 l7 i! B
    30 export function get(url, params) {' ?) I$ u: p1 E
    31 return new Promise((resolve, reject) => {) R/ g' T0 M$ v2 v+ c
    32 axios.get(url, {. ]" {! z" A+ c* X5 E/ o
    33 params:params
    6 t" t" G6 m4 ?$ V  l( P3 V34 }).then(res => {
    7 B% J1 ]9 Y+ [' ?- G& O& n35 resolve(res)
    , t6 Y4 G+ V; g. k$ N9 `9 S1 Z36 }).catch(err => {2 A5 W: g5 j, X* h
    37 reject(err)3 R2 c% U5 ^3 t. k- s
    38 })1 D5 c& i# j+ \$ p" T2 {2 a
    39 })+ J$ `4 F* v; r
    40 };  \! v* q1 g$ B+ D& C3 L
    415 l4 }0 A) N3 e
    42 export function post(url,params){
    7 {, _# v0 U$ U( s2 d* P# W5 ?3 z/ j43 return new Promise((resolve,reject)=>{
    6 {8 r0 \# [) {) d3 r( |$ G44 axios.post(url,params).then(res=>{
    ' N) u- e, P  L) _7 h* g45 resolve(res.data)
    5 o& ~, Q9 i: U; O46 }).catch(err=>{
    1 x2 d3 u0 L7 x$ _47 reject(err.data)" C6 j; G3 ]+ p, n# @# U
    48 })
    . ^/ e; `" f( A+ {5 T# T0 m& H490 f: b5 I. ?2 F3 o
    50 })
    ( f3 f3 X5 C% F/ _. O% e( ^+ b51 }% f3 ~# c4 X+ g# K
    复制代码
    & L+ g# ]9 a0 h4 O- Kapi.js里面的6 a/ m9 ?4 Z8 M6 L% V

    ' O' d4 V# T% r5 ^6 p" q复制代码. x% K8 Y) X" |+ u2 l5 D5 r& h7 v8 f
    import { get, post } from “…/http/http” //引入封装好的get和post方法  B8 o- I9 Q- J$ S6 Z0 T
    // 封装请求的方式
    , F5 Q& x: J+ m- l* W! g, h: k# u0 @export function getBanners() {//轮播
    * g  G  u$ i7 ^( u1 X: X" D; g+ breturn get(‘api/app/banner’)# H( d* q+ D% N/ j/ G( [
    }* @7 q- I5 g8 D  v. {, h

    ( {& X( x9 |" Y. R) qexport function getIndex(){//首页数据/ l3 e9 r* f5 M4 N: ?
    return get(‘api/app/recommend/appIndex’)" w% O& r3 x& M/ A! W( e& v4 A$ u
    }
      V: D  e, W8 u$ u复制代码" y" [4 f5 K! q1 N  U- q9 a
    然后在vue里面的文件应用( n( W' f/ e. E+ j6 g7 `3 v8 y2 O9 S
    / C5 y* ~2 B5 S3 [' e% S
    复制代码, }) H  d; t1 @  S0 x1 S6 ?1 Q
    import { getBanners, getIndex } from “…/api/api”;//引入api里面定义的方法
    ' ^# j: H+ P; i, f5 c( @: I. ]" g, Q5 t/ z# @: X
    async mounted() {! G$ R: Z& N1 L" M/ V4 g  F/ |
    var swiperr = await getBanners();3 U. O# A, M. X) w) v7 I$ {' i
    console.log(swiperr.data.data);
    ! I( @7 |& K0 k5 Q/ Z6 gthis.swipers = swiperr.data.data; //轮播图渲染
    $ E7 |1 D6 p1 U8 c- q) y9 [/ d
    & v2 w: r" i5 ^8 m. V% s0 xvar strr = await getIndex();: A" r  ?6 S3 |0 w/ P) g3 c& Z
    console.log(strr); //明星讲师渲染
    ; @8 p* f0 ]" O" z4 ?& V3 athis.strs = strr.data.data;
    1 f$ f. N/ `$ R+ D, r8 Bconsole.log(this.strs);6 W3 S" O' R; r/ r7 G
    1
    % \, {/ ]6 e+ u2 f4 k) y2
    5 ?, k+ v7 _1 p1 z1 e) {3
    - x  \+ s: N5 ^% f7 E9 t4% [2 U% F7 I( i1 E) G- B
    }& }% A# |1 C# x' x& g4 B2 W

    ) q' J6 M, F; t7 v
  • TA的每日心情
    开心
    2020-8-5 15:09
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-8-11 12:41 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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