小编new*_*123的帖子

REST - 扩展关系

我正在建立一个事件管理系统.该模式如下所述.API了解这些关系并返回请求结果中相关资源的链接.例如,

GET /Events/1

    "links": {
    "Venue": "/Venues/1",
    "Tickets": "/Tickets?event_id=1",
    "Teams": "/Teams?event_id=1",
    "Registrations": "/Registrations?event_id=1"
}
Run Code Online (Sandbox Code Playgroud)

我读过的关于REST和HATEOAS的大部分内容都表明这是"正确"的方式,但效率非常低.例如,如果我想生成参与事件的用户和团队的报告,则需要许多请求.这类似于运行多个选择查询而不是针对DB运行单个连接查询.所以我的问题是,我是否应该扩展关系并在资源请求中嵌入相关资源?这也带来了问题b/c上面的请求将返回大量数据.答案可能是坚持关系链接并设置适当的缓存.无论如何,我想要你的意见.

Schema

events
    hasMany registrations
    hasMany tickets
    hasMany teams

team
    belongsTo event

ticket
    belongsTo event
    hasMany registrations

user
    hasMany registrations

registrations
    belongsTo event
    belongsTo ticket
    belongsTo user
    belongsTo team
Run Code Online (Sandbox Code Playgroud)

rest

6
推荐指数
1
解决办法
874
查看次数

CakePHP子域路由和杂项

背景:构建一个Web应用程序(作为CakePHP的介绍),允许用户管理休息室.休息室由博客,联系人,日历等组成.每个休息室都与子域相关联(因此jcotton.lounger.local会带您到我的休息室).用于创建新休息室,注册用户等的网站的根目录在lounger.local上.我正在使用Cake 2.0.

问题:

  1. 我希望能够从单个休息室(lounger.local的子域)中分离与根网站(lounger.local)相关的操作和视图.经过大量的研究,我决定采用以下方法.我设置了一个前缀路由"lounge",并在routes.php中添加了以下代码.与休息室相关联的操作(和视图)都包含前缀lounge(例如:lounge_index()).你会怎么处理这个?

         if(preg_match('/^([^.]+)\.lounger\.local$/',env("HTTP_HOST"),$matches)){
               $prefix = "lounge";
               Router::connect('/', array('controller' => 'loungememberships','action' => 'index', 'prefix' => $prefix, $prefix => true));
               /* Not currently using plugins
               Router::connect("/:plugin/:controller", array('action' => 'index', 'prefix' => $prefix, $prefix => true));
               Router::connect("/:plugin/:controller/:action/*", array('prefix' => $prefix, $prefix => true));
               */
               Router::connect("/:controller", array('action' => 'index', 'prefix' => $prefix, $prefix => true));
               Router::connect("/:controller/:action/*", array('prefix' => $prefix, $prefix => true));
               unset($prefix);
          }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 每次用户在休息室中执行操作(例如在博客中发布评论,添加联系人等)时,都需要查找lounge_id(基于子域); 这是验证用户是否有权执行该操作以及将相应数据与正确的休息室相关联所必需的.我已经通过AppController中的beforeFilter函数实现了这个.每次接收到子域的请求时,都会执行搜索,并将lounge_id写入会话变量.然后每个控制器加载CakeSession并读取相应的lounge_id.这比调用ClassRegistry :: Init('Lounge')并在每个控制器中进行查找更好吗?有更好的溶液吗?

在此先感谢您的帮助

subdomain routing cakephp

2
推荐指数
1
解决办法
3872
查看次数

标签 统计

cakephp ×1

rest ×1

routing ×1

subdomain ×1