1新建文件夹 service ,里边建4个文件,分别是statistic-service.jsx 首页数据统计接口, user-service.jsx用户接口, product-service.jsx产品接口,order-service.jx订单接口

2.首页数据统计接口statistic-service

mm.jsx是封装的ajax请求,在上一边博客里边有讲到

  1. import MUtil from 'util/mm.jsx'
  2.  
  3. const _mm = new MUtil();
  4.  
  5. class Statistic{
  6.     // 首页数据统计
  7.     getHomeCount(){
  8.         return _mm.request({
  9.             url: '/manage/statistic/base_count.do'
  10.         });
  11.     }
  12. }
  13.  
  14. export default Statistic;

3. 用户接口user-service

  1. import MUtil from 'util/mm.jsx'
  2.  
  3. const _mm = new MUtil();
  4.  
  5. class User{
  6.     // 用户登录
  7.     login(loginInfo){
  8.         return _mm.request({
  9.             type: 'post',
  10.             url: '/manage/user/login.do',
  11.             data: loginInfo
  12.         });
  13.     }
  14.     // 检查登录接口的数据是不是合法
  15.     checkLoginInfo(loginInfo){
  16.         let username = $.trim(loginInfo.username),
  17.             password = $.trim(loginInfo.password);
  18.         // 判断用户名为空
  19.         if(typeof username !== 'string' || username.length ===0){
  20.             return {
  21.                 status: false,
  22.                 msg: '用户名不能为空!'
  23.             }
  24.         }
  25.         // 判断密码为空
  26.         if(typeof password !== 'string' || password.length ===0){
  27.             return {
  28.                 status: false,
  29.                 msg: '密码不能为空!'
  30.             }
  31.         }
  32.         return {
  33.             status : true,
  34.             msg : '验证通过'
  35.         }
  36.     }
  37.     // 退出登录
  38.     logout(){
  39.         return _mm.request({
  40.             type : 'post',
  41.             url : '/user/logout.do'
  42.         });
  43.     }
  44.     getUserList(pageNum){
  45.         return _mm.request({
  46.             type : 'post',
  47.             url : '/manage/user/list.do',
  48.             data : {
  49.                 pageNum : pageNum
  50.             }
  51.         });
  52.     }
  53. }
  54.  
  55. export default User;

4.产品接口product-service

  1. import MUtil from 'util/mm.jsx'
  2.  
  3. const _mm = new MUtil();
  4.  
  5. class Product{
  6.     // 获取商品列表
  7.     getProductList(listParam){
  8.         let url = '',
  9.             data = {};
  10.         if(listParam.listType === 'list'){
  11.             url = '/manage/product/list.do';
  12.             data.pageNum = listParam.pageNum;
  13.         }else if(listParam.listType === 'search'){
  14.             url = '/manage/product/search.do';
  15.             data.pageNum = listParam.pageNum;
  16.             data[listParam.searchType] = listParam.keyword;
  17.         }
  18.         return _mm.request({
  19.             type : 'post',
  20.             url : url,
  21.             data : data
  22.         });
  23.     }
  24.       // 获取商品详情
  25.       getProduct(productId){
  26.         return _mm.request({
  27.             type : 'post',
  28.             url : '/manage/product/detail.do',
  29.             data : {
  30.                 productId : productId || 0
  31.             }
  32.         });
  33.     }
  34.     // 检查保存商品的表单数据
  35.     checkProduct(product){
  36.         let result = {
  37.             status: true,
  38.             msg: '验证通过'
  39.         };
  40.         // 判断用户名为空
  41.         if(typeof product.name !== 'string' || product.name.length ===0){
  42.             return {
  43.                 status: false,
  44.                 msg: '商品名称不能为空!'
  45.             }
  46.         }
  47.         // 判断描述不能为空
  48.         if(typeof product.subtitle !== 'string' || product.subtitle.length ===0){
  49.             return {
  50.                 status: false,
  51.                 msg: '商品描述不能为空!'
  52.             }
  53.         }
  54.         // 验证品类ID
  55.         if(typeof product.categoryId !== 'number' || !(product.categoryId > 0)){
  56.             return {
  57.                 status: false,
  58.                 msg: '请选择商品品类!'
  59.             }
  60.         }
  61.         // 判断商品价格为数字,且大于0
  62.         if(typeof product.price !== 'number' || !(product.price >= 0)){
  63.             return {
  64.                 status: false,
  65.                 msg: '请输入正确的商品价格!'
  66.             }
  67.         }
  68.         // 判断库存为数字,且大于或等于0
  69.         if(typeof product.stock !== 'number' || !(product.stock >= 0)){
  70.             return {
  71.                 status: false,
  72.                 msg: '请输入正确的库存数量!'
  73.             }
  74.         }
  75.  
  76.         return result;
  77.     }
  78.    // 保存商品
  79.    saveProduct(product){
  80.     return _mm.request({
  81.         type : 'post',
  82.         url : '/manage/product/save.do',
  83.         data : product
  84.     });
  85. }
  86.     // 变更商品销售状态
  87.     setProductStatus(productInfo){
  88.         return _mm.request({
  89.             type : 'post',
  90.             url : '/manage/product/set_sale_status.do',
  91.             data : productInfo
  92.         });
  93.     }
  94.    //查找一级品类列表
  95.    getCategoryList(parentCategoryId){
  96.     return _mm.request({
  97.         type : 'post',
  98.         url : '/manage/category/get_category.do',
  99.         data : {
  100.             //没有传的话默认值就是0
  101.             categoryId : parentCategoryId || 0
  102.         }
  103.     });
  104.  
  105.    }
  106.      // 新增品类
  107.      saveCategory(category){
  108.         return _mm.request({
  109.             type : 'post',
  110.             url : '/manage/category/add_category.do',
  111.             data : category
  112.         });
  113.     }
  114.     // 修改品类名称
  115.     updateCategoryName(category){
  116.         return _mm.request({
  117.             type : 'post',
  118.             url : '/manage/category/set_category_name.do',
  119.             data : category
  120.         });
  121.     }
  122. }
  123.  
  124. export default Product;

5.订单接口order-service.jx

  1. import MUtil from 'util/mm.jsx'
  2.  
  3. const _mm = new MUtil();
  4.  
  5. class Order{
  6.     // 获取订单列表
  7.     getOrderList(listParam){
  8.         let url = '',
  9.             data = {};
  10.         if(listParam.listType === 'list'){
  11.             url = '/manage/order/list.do';
  12.             data.pageNum = listParam.pageNum;
  13.         }else if(listParam.listType === 'search'){
  14.             url = '/manage/order/search.do';
  15.             data.pageNum = listParam.pageNum;
  16.             data.orderNo = listParam.orderNo;
  17.         }
  18.         return _mm.request({
  19.             type : 'post',
  20.             url : url,
  21.             data : data
  22.         });
  23.     }
  24.     // 获取订单详情
  25.     getOrderDetail(orderNumber){
  26.         return _mm.request({
  27.             type : 'post',
  28.             url : '/manage/order/detail.do',
  29.             data : {
  30.                 orderNo : orderNumber
  31.             }
  32.         });
  33.     }
  34.     sendGoods(orderNumber){
  35.         return _mm.request({
  36.             type : 'post',
  37.             url : '/manage/order/send_goods.do',
  38.             data : {
  39.                 orderNo : orderNumber
  40.             }
  41.         });
  42.     }
  43. }
  44.  
  45. export default Order;

6.解决跨域问题

在webpack.config里边 devserverr 里边的proxy配置即可解决

7.页面引入和使用

  1. import Statistic from 'service/statistic-service.jsx'
  2.  
  3. const _statistic = new Statistic();
  4.  
  5.    _statistic.getHomeCount().then(res => {
  6.             this.setState(res);
  7.         }, errMsg => {
  8.             _mm.errorTips(errMsg);
  9.         });

React后台管理系统-后台接口封装的更多相关文章

  1. React后台管理系统-ajax请求封装

    1.新建文件夹 util , 在util里边新建 mm.jsx文件 2.使用jquery里边的ajax发送请求,回调用promise,返回一个promise对象 request(param){     ...

  2. 使用react全家桶制作博客后台管理系统

    前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用react全家桶制作的博客后台管理系统 概述 该项目是基于react全家桶(React.React-r ...

  3. 使用React全家桶搭建一个后台管理系统

    引子 学生时代为了掌握某个知识点会不断地做习题,做总结,步入岗位之后何尝不是一样呢?做业务就如同做习题,如果‘课后’适当地进行总结,必然更快地提升自己的水平. 由于公司采用的react+node的技术 ...

  4. 使用react全家桶制作博客后台管理系统 网站PWA升级 移动端常见问题处理 循序渐进学.Net Core Web Api开发系列【4】:前端访问WebApi [Abp 源码分析]四、模块配置 [Abp 源码分析]三、依赖注入

    使用react全家桶制作博客后台管理系统   前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用react全家桶制作的博客后台管理系统 概述 该项目是基 ...

  5. 《React后台管理系统实战 :一》:目录结构、引入antd、引入路由、写login页面、使用antd的form登录组件、form前台验证、高阶函数/组件

    实战 上接,笔记:https://blog.csdn.net/u010132177/article/details/104150177 https://gitee.com/pasaulis/react ...

  6. React版/Vue版都齐了,开源一套【特别】的后台管理系统...

    本项目主要基于Elux+Antd构建,包含React版本和Vue版本,旨在提供给大家一个简单基础.开箱即用的后台管理系统通用模版,主要包含运行环境.脚手架.代码风格.基本Layout.状态管理.路由管 ...

  7. react后台管理系统路由方案及react-router原理解析

        最近做了一个后台管理系统主体框架是基于React进行开发的,因此系统的路由管理,选用了react-router(4.3.1)插件进行路由页面的管理配置. 实现原理剖析 1.hash的方式   ...

  8. 【共享单车】—— React后台管理系统开发手记:主页面架构设计

    前言:以下内容基于React全家桶+AntD实战课程的学习实践过程记录.最终成果github地址:https://github.com/66Web/react-antd-manager,欢迎star. ...

  9. Vue + Element-ui实现后台管理系统(4)---封装一个ECharts组件的一点思路

    封装一个ECharts组件的一点思路 有关后台管理系统之前写过三遍博客,看这篇之前最好先看下这三篇博客.另外这里只展示关键部分代码,项目代码放在github上: mall-manage-system ...

随机推荐

  1. MySQL服务器与MySQL57服务器区别与不同处在哪里,他们各自的领域范围,能不能同时启动服务?

    安装了MySQL-5.7.18.0版本数据库,版本中包含了MySQL Workbench可视化试图工具,在服务列表栏中会有MySQL的两个服务器:如果启动第一项MySQL服务器就只能操作数据库,外界不 ...

  2. 调试JMETER脚本的5种方法

    如果你曾经设计过JMeter脚本,我敢打赌你至少有一次弄清楚Json Extractor无法正常工作的原因.你猜怎么着?我去过那儿! 你知道为什么最好的JMeter Performance Engin ...

  3. Vue里的nextTick方法

    官方解释: 在下次 DOM 更新循环结束之后执行延迟回调.在修改数据之后立即使用这个方法,获取更新后的 DOM. 自己总结: `Vue.nextTick(callback)`,当数据发生变化,更新后执 ...

  4. linux环境下jdk部署配置

    1.java官网下载相关的jdk包 2.配置系统环境变量,编辑/etc/profile文件,在文件的末尾添加一下信息: export JAVA_HOME=/usr/jdk1.8.0_101export ...

  5. selenium框架安装及webdriver安装

    本文介绍的是selenium安装及webdriver安装.小实例 1.selenium介绍 selenium是一个用于web应用程序测试的工具. Selenium测试直接运行在浏览器,就向真正的用户操 ...

  6. ubuntu搭建mediawiki

    1.搭建lamp环境,lamp指的是: Linux+Apache+Mysql/MariaDB+Perl/PHP/Python (我们安装的是Linux+apache2+postgresql+php) ...

  7. (转)CentOS 6下配置软RAID图文详解

    CentOS 6下配置软RAID图文详解 原文:http://blog.51cto.com/hujiangtao/1929620 一.RAID 简介 RAID 是英文Redundant Array o ...

  8. javaweb项目导入myecplise出错

    项目导入出错:移动项目的时候.classpath .project不要删 build path -> use for source floder 把某一文件夹当作源码文件夹 bulid path ...

  9. Linux网络编程函数

    1. Server端-socket/bind/listen/accept/read socket(AF_INET, SOCK_STREAM, 0); //指定端口,内核将端口上的数据转发给该socke ...

  10. 工作经验(JNI篇)

    我的工作是C++开发,主要是做底层的,由于要做跨平台的原因,常会做成JNI给Java调用,下面是工作时总结的经验希望有用 JNI只能使用C语言的方式编译,所以,要使用C++的话,要用 extern & ...