当前位置: 首页 > news >正文

第49章 API统一集中管理

1 关于统一集中管理API的一些思考

    1、统一集中管理是保证工程性项目得保质、保量、成功实施,并对后期维护提供数据支撑的最有效,最节省资源和时间的技能和做法,软件做为一种特殊的工程性项目,也符合上述特性。

    2、由于在前台实现中一个URL可能需要多次被调用,如果把一个URL封装到一个实例的指定方法中,同一个项目以大量减少重复性的代码。

    3、统一集中管理API的另外一个好处是,如果后台的API方法发生变更,需要把该AIP所对应的封装方法中的URL修改即可以,不再需要对大量的同一个URL进行修改操作。

    4、有些开发者习惯于把统一集中管理API与Axios拦截守同时定义在同一个JS文件中,但这种实践方案在本人看来是不好的,最好的实事是把统一集中管理API与Axios拦截守分开定义在两个不同的JS文件中,API JS文件引用Axios JS文件中的拦截守实例,从而实现对一个URL封装,这也是本人会先在前面章节中会先讲述Axios拦截守的原理和抽离的实现。

2 抽离定义API集中管理:src\common\http.api.js

import axiosInterceptor from './http.interceptor.js';

/****************************API集中管理--后台首页************************************/

export const getHomeAdminIndex = async () => {

    return await axiosInterceptor.get('/HomeAdmin/Index');

};

/****************************API集中管理--用户模块************************************/

//1个指定用户的登录操作。

export const postCustomerLogin = async params => {

    return await axiosInterceptor.post('/Customer/Login', params);

};

//获取1个指定用户的信息。

export const getCustomerInfo = async params => {

    return await axiosInterceptor.get('/Customer/Info', {

        params: params

    });

};

//1个指定用户实例持久化到用户表中。

export const postCustomerAdd = async params => {

    return await axiosInterceptor.post('/Customer/CreatePost', params);

};

//1个指定用户实例持久化更新到用户表中。

export const putCustomerEdit = async params => {

    return await axiosInterceptor.put('/Customer/EditPut', params);

};

//1个指定用户实例从用户表中物理删除。

export const deleteCustomer = async params => {

    return await axiosInterceptor.delete('/Customer/Delete', {

        params: params

    });

};

//所有用户实例的分页渲染显示。

export const postCustomerIndex = async params => {

    return await axiosInterceptor.post('/Customer/Index', params);

};

3 重构端管理首页:src\views\WelcomeView.vue

<template>

    <h1>WelcomeView-----Amin</h1>

</template>

<script>

    import {

        getHomeAdminIndex,

        getCustomerInfo,

        postCustomerAdd,

        putCustomerEdit,

        deleteCustomer,

        postCustomerIndex

    } from '../common/http.api.js';

    export default {

        data() {

            return {};

        },

        methods: {

            async getHomeAdminIndex() {

                let res = await getHomeAdminIndex();

                console.log(res.data);

                let customerIdParam = {

                    customerId: 1,

                };

                res = await getCustomerInfo(customerIdParam);

                console.log(res.data);

               

                let customer = {

                    Name: "AAAAA@yourStore.com",

                    Email: "AAAAA@yourStore.com",

                    CreatedDateTime: new Date(),

                    UpdatedDateTime: new Date()

                }

                res = await postCustomerAdd(JSON.stringify(customer));

                console.log(res.data);

               

                let customerPut = {

                    Id: 3,

                    Name: "AAAAAcustomerPut@yourStore.com",

                    Email: "AAAAAcustomerPut@yourStore.com",

                    CreatedDateTime: new Date(),

                    UpdatedDateTime: new Date()

                }

                res = await putCustomerEdit(JSON.stringify(customerPut));

                console.log(res.data);

               

                let customerIdDelete = {

                    customerId: 3,

                };

                res = await deleteCustomer(customerIdDelete);

                console.log(res.data);

                let pagination = {

                    pageIndex: 1, //初始化当前页,即第1页。

                    pageSize: 15, //初始化每页最多所包含的项数值,即每页最多所包含15项。

                    totalCount: 0, //初始化数据源的总计项数值,由于还没有加载数据源所以该值为:0

                    //初始化排序字段及其方式。

                    OrderByFiled: JSON.stringify({

                        filed: 'id',

                        type: 'descending',

                    }),

                    QueryCondition: ""

                };

                res = await postCustomerIndex(JSON.stringify(pagination));

                console.log(res.data);

            },

        },

        async mounted() {

            await this.getHomeAdminIndex();

        },

    };


</script>

对以上功能更为具体实现和注释见:230222_011shopvue(API统一集中管理)。

http://www.lryc.cn/news/16434.html

相关文章:

  • carla0.9.13-UE4添加4轮车模型(Linux系统)
  • 对比yolov4和yolov3
  • Android ServiceManager
  • 数据挖掘,计算机网络、操作系统刷题笔记53
  • 地球板块运动vr交互模拟体验教学提高学生的学习兴趣
  • 【Android玩机】跟大家聊聊面具Magisk的使用(安装、隐藏)
  • DACS: Domain Adaptation via Cross-domain Mixed Sampling 学习笔记
  • python并发编程(并发与并行,同步和异步,阻塞与非阻塞)
  • 【项目】DTO、VO以及PO之间的关系和区别
  • Nginx介绍
  • 你什么档次?敢和我用一样的即时通讯平台WorkPlus?
  • 学习资源 - 深度学习
  • C语言数据结构初阶(1)----时空复杂度
  • vscode SSH 保存密码自动登录服务器
  • VR全景多种玩法打破传统宣传,打造全新云端视界
  • Git 教程
  • 一种全新的图像滤波理论的实验(二)
  • Boost库文档搜索引擎
  • Linux中安装JDK
  • 宝塔面板公网ip非80端口非443端口部署ssl
  • 手撕八大排序(上)
  • clickhouse 怎么统计每天0点到10点的某个字段的数据量
  • [qiankun]-图片加载问题
  • 关于upstream的八种回调方法
  • 0303泰勒公式-微分中值定理与导数的应用
  • 日常运维基础命令
  • 人员行为识别系统 TensorFlow
  • ES-倒排索引BKD原理skiplist
  • 每天一道大厂SQL题【Day12】微众银行真题实战(二)
  • 带您了解TiDB MySQL数据库中关于日期、时间的坑