路由

使用thinkphp,建议开启强制路由;

不开启强制路由的程序猿不是个好好程序猿(可以有效防止黑客恶意访问,如:猜后台地址,猜文件路径)

开启强制路由:文件位置:config/route.php

‘url_route_must’ => true, // 是否强制使用路由

认识系统路由


  1. 当前主要针对CRMEB客户关系管理系统为例指导大家如何配置路由。
  2. 对路由的基本知识点,我们在不做过多赘述,不太懂的小伙伴可以前往

Thinkphp开发文档进行学习。
接口地址:http://域名/应用模块目录名/具体业务控制器目录/方法名


  1. controller目下下的业务类文件和route路由下的路由文件基本是一一对应的。
  2. 大家也会发现个别业务控制器没有对应的路由文件,这个需要说明一点,业务控制器并不是强制一一对应的,
  3. 当然你完全可以把order控制器中的接口地址配置到user路由文件里面,但是为了各模块功能清晰,保证统一管理,不建议你这么做。

如何新增路由


  1. 我们以order控制器为例,新增order_demo方法。控制器目录:admin/controller/store/order/StoreOrder.php

  1. public function order_demo()
  2. {
  3. $where = $this->request->postMore([
  4. ['one', '2'],
  5. ['two', '2'],
  6. ]);
  7. $data = $this->services->orderCount($where);
  8. return $this->success($data);
  9. }

  1. 配置路由,路由目录:/route/admin.php

  1. Route::post('demo', 'admin.store.order.StoreOrder/order_demo')->name('OrderDemo');

如何修改路由请求方式

我们以order控制器为例,请求访问chart方法。Route::get('chart', 'admin.store.order.StoreOrder/chart')->name('StoreOrderChart'),是我们当前接口的路由配置,前端以get请求调取接口即可:http://serverName/adminapi/order/chart。
如果我们要修改请求方式,将get修改为post,记得修改四处地方:

  1. 将接口数据接收方式改为post接收

    
    
    1. public function chart()
    2. {
    3. $where = $this->request->postMore([
    4. ['data', '', '', 'time'],
    5. [['type', 'd'], 0],
    6. ]);
    7. $data = $this->services->orderCount($where);
    8. return $this->success($data);
    9. }
    1. 路由文件配置改为post请求。

      
      
      1. Route::post('chart', 'admin.store.order.StoreOrder/chart')->name('StoreOrderChart');
    2. 前端调用请求方式务必改为post请求
    3. 后台菜单【设置】【管理权限】【权限规则】进入数据列表,将订单->订单管理->订单数据请求方式改为post即可,

如何给路由添加混合参数

路由配置:在方法名后/:参数


  1. Route::get('chart/:id', 'admin.store.order.StoreOrder/chart')->name('StoreOrderChart');

控制器:入参传入$id


  1. public function chart($id)
  2. {
  3. $where = $this->request->getMore([
  4. ['data', '', '', 'time'],
  5. [['type', 'd'], 0],
  6. ]);
  7. $where['orderId'] = $id;
  8. $data = $this->services->orderCount($where);
  9. return $this->success($data);
  10. }

资源路由

支持设置RESTFul请求的资源路由,方式如下:
Route::resoure('user','user');
表示注册了一个名称为user的资源路由到User控制器,系统会自动注册7个路由规则,如下:
| 标识 | 请求类型 | 生成路由规则 | 对应操作方法(默认) |
| —- | —- | —- | —- |
| index | GET | user | index |
| create| GET | user/create | create |
| save | POST | user | save |
| read | GET | user/:id | read |
| edit | GET | user/:id/edit | edit |
| update | PUT | user/:id | update |
| delete | DELETE | user/:id | delete |

路由分组

使用Route类的group方法进行注册,路由分组也支持嵌套,例如:


  1. //分组嵌套
  2. Route::group('user',function(){
  3. Route::get('user_info','user/user/info');
  4. Route::get('group','user.gourp/list');
  5. Route::get('label','user.label/list');
  6. });
  7. //嵌套
  8. Route::group('user',function(){
  9. Route::get('user_info','user/user/info');
  10. Roure::group('group',function(){
  11. Route::get('group','user.gourp/list');
  12. });
  13. Route::group('label',function(){
  14. Route::get('label','user/label/list');
  15. });
  16. });

路由分组与路由中间件配合使用,可以控制访问权限


  1. Route::group('user',function(){
  2. Route::get('user/[:type]','user/list');
  3. })->middleware(\app\index\middleware\AuthTokenMiddleware::class, true);

跨域请求

如果某个路由或者分组需要支持跨域请求,可以使用


  1. Route::get('user/[:type]','user/list')->allowCrossDomain();

跨域请求一般会发送一条OPTIONS的请求,一旦设置了跨域请求的话,不需要自己定义OPTIONS请求的路由,系统会自动加上。
会默认带上header:


  1. Access-Control-Allow-Origin:\*
  2. Access-Control-Allow-Methods:GET, POST, PATCH, PUT, DELETE
  3. Access-Control-Allow-Headers:Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, X-Requested-With

也可以添加或更改header


  1. Route::get('user/[:type]','user/list')->allowCrossDomain([
  2. 'Access-Control-Allow-Origin' => 'thinkphp.cn',
  3. 'Access-Control-Allow-Credentials' => 'true'
  4. ]);

MISS路由

如果希望在没有匹配到所有的路由规则后执行一条设定的路由,可以注册一个单独的MISS路由:


  1. Route::miss('public/index');

也可以使用闭包


  1. Route::miss(function(){
  2. return '404 Not Found!';
  3. });

crmeb多商户二开crmeb架构二开文档异常处理【4】相关推荐

  1. crmeb多商户二开crmeb多商户授权失败

    crmeb多商户二开crmeb多商户授权失败 如果测试域名crmeb-test.授权域名 提示授权失败, 例如: 授权域名 mer.crmeb.net, 则测试域名为crmeb-test.mer.cr ...

  2. 二开CRMEB v4.4.2修复改价后退款金额还是未改价之前的价格问题

    二开CRMEB v4.4.2修复改价后退款金额还是未改价之前的价格问题 直接替换更新这个文件就好了 app/services/order/StoreOrderRefundServices.php &l ...

  3. crmeb多商户二开crmeb类库二开文档 Basic基类【1】

    Basic基类 目录结构 ├─basic │ BaseController.php │ BaseManager.php │ BaseMessage.php │ BaseStorage.php │ Ba ...

  4. 后天淘宝客系统二次开发版【需后天授权码】此源码是二开后的

    声明:必须是你已经购买过后天淘宝客系统授权码的.绑定了域名.才可以使用.这个只是二次开发过后的源码.源码是通用的. 然后将本站系统买去使用并用你的授权码才可以正常使用. 下面大多数功能都是找官方二次开 ...

  5. CRMEB多商户二开流程介绍

    本文介绍一下CRMEB多商户二次开发的操作流程,从创建数据库,到实现一个完整添加数据的过程,其他更多方法实现只是路由和方法名的差异,也就不过多赘述. 一.创建数据库 例如数据库名为:eb_is_tes ...

  6. CRMEB多商户二开教程1

    定义新的接口 本文介绍一下CRMEB多商户二次开发的操作流程,从创建数据库,到实现一个完整添加数据的过程,其他更多方法实现只是路由和方法名的差异. 一.创建数据库 例如数据库名为:eb_is_test ...

  7. CRMEB多商户二开教程3

    **创建新的组合数据** 本文给大家介绍CRMEB多商户如何创建,维护,使用组合数据功能. 创建组合数据规则 先找到组合数据管理页面,点击添加组合数据按钮 创建组合数据规则 这里以首页banner数据 ...

  8. crmeb开源版二开好方便

    crmeb使用thinkphp6框架就能行底层逻辑的搭建,thinkphp是一款非常好用的框架也容易上手,开发教程又多加之crmeb开源版对目录结构.代码功能.数据库字典一一列出,方便有需要的开发者对 ...

  9. crmeb多商户二开文档

    CRMEB多商户商城系统 < 项目介绍 > 基于ThinkPhp6+ swoole4+uniapp 开发的一套CRMEB新零售多商户商城系统. CRMEB系统就是集客户关系管理+营销电商系 ...

  10. JAVA 单商户商城系统 成熟源码 支持二开

    三勾商城是开发友好的微信小程序商城,框架支持SAAS,支持发布 iOS + Android + 公众号 + H5 + 各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)等多个平台,不可多得的二开 ...

最新文章

  1. Git_学习_06_ 放弃本地修改
  2. php webserver documentroot,PHP $_SERVER['DOCUMENT_ROOT'] 问题
  3. 解决MyBatis中 Could not set property ~ o f ~异常
  4. MonoDevelop 1.0 和 Mono 1.9(2.0 beta)发布了
  5. my paper in EI
  6. Linux系统调用--getrusage函数详解
  7. 计算机基础知识教案1,计算机基础知识教案一
  8. Asp.net的HTTP请求处理过程
  9. Java的深拷贝的例子
  10. vue key重复_Vue 前端面试题
  11. 【SpringBoot_ANNOTATIONS】组件注册 07 @Import 给容器快速导入一个组件
  12. PTA 硬币找钱问题
  13. 2021-09-10 LeetCode1894-找到需要补充粉笔的学生编号(每日一题)
  14. JavaScript下的setTimeout(fn,0)意味着什么?
  15. 响应式设计的三个步骤
  16. Docker的上手(Ubuntu140.4 Mate)
  17. qos pre-classify
  18. 【Linux篇】第十五篇——线程安全
  19. Ansible playbook 详解
  20. python一键电影搜索与下载_[懒人福利]用Python进行[天堂电影]下载资源的搜索

热门文章

  1. iOS开发音频格式转换
  2. python实现无刻度3升水和5升水准确得到4升水的代码步骤
  3. JVM致命错误日志 hs_err_pid.log的分析
  4. 社交仅发送图片和视频 -设计测试用例
  5. PM_10 十大管理之项目沟通管理(七)和干系人管理(八)
  6. 如何在CSDN中发表博客
  7. 网站性能优化的10种方法
  8. OpenGL学习之旅(三)——Bezier曲线理论与OpenGL实现
  9. 循环实现自动售货机的学习笔记
  10. 2021年复盘总结发现了C站博主缺少的赚钱之路