如果每个方法都需要去获取当前的应用信息, 改如何做呢?

背景:#

一个用户可以创建多个应用 (app), 登陆后, 需要选择一个应用来进行操作。

路由:#

路由配置大概是这个样子

Route::get('{appId}/general', 'AppController@index')->name('general');
Route::get('{appId}/config', 'ConfigController@index')->name('config');
 ...

问题:#

如上面的设计, 每个操作中都需要获取当前对应的 app。
我现在的做法是在每个方法中调用 getCurrentApp($appId) 的方法去获取应用信息, 我想问的是这么做是否合理, 是否有更好的方法而避免多次重复的调用 getCurrentApp

我想到的其他方案但均有些问题:#

  1. 在选择引用的时候就初始化当前的 app 缓存起来, 直至下次切换,然后在其他的操作中直接获取前面初始化的 app.

    问题:

    假如改变了 appid, 此时仍然能从缓存取到正确的 app 信息.

  2. 在 构造函数中去初始化 app 信息。
    问题:

    在构造函数中获取不到路由参数中的 appId。

求支招!

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 3
leo

index 方法加入参数 index(App $appId, Request $request),laravel 会自动解析

8年前 评论

写个中间件,需要的请求全过这个中间件,在中间件中解析出这个 appId 合并到 $request 去。其他方法中直接取用便是。

8年前 评论

@qufo 觉得用这样的方法会更简单

8年前 评论