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

背景:

一个用户可以创建多个应用(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。

求支招!

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 3
leo

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

7年前 评论

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

7年前 评论

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

7年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!