关于 REST API 和软件架构风格的建议 [关闭]
Posted
技术标签:
【中文标题】关于 REST API 和软件架构风格的建议 [关闭]【英文标题】:Suggestions on REST API & Software Architecture Style [closed] 【发布时间】:2021-02-27 19:05:28 【问题描述】:首先我是学生,所以我需要知道化合物如何相互作用,也许下次我会用框架来做,但我需要做的第一件事是知道如何从头开始构建软件表格。
我的项目将是 web 和移动应用程序,所以我决定为两者创建一个 rest api...我将在 Native php 中实现我的项目。
软件架构风格的最佳实践是什么? 但我不知道我的rest api Multitiered(mvc,mvp,甚至是其他类似(模型视图控制器数据访问))的最佳实践软件架构是什么 我对多层(模型视图控制器数据访问)的想法class Controller
public $view;
public $model;
public $dataAccess;
public function __construct()
$this->view = new View();
$this->model = new Model();
$this->dataAccess = new DataAccess();
class UserController extends Controller
public function __construct()
$this->model->tableName = "users";
public function get($id)
if($id)
$this->model->data = $this->dataAccess->selectById($this->model->tableName, $id);
$this->view->render($this->model->data);
else
$this->view->renderError();
class Application
private function __construct()
public static function run()
$router = new Router();
$router->get("/users/([0-9]+)", array("UserController", "get"));
$router->run();
文件结构如何? 应用程序/ app 目录包含我们的 rest-api 组件,如控制器、视图、模型、数据访问。 核心/ 该目录包含Router类和基本类 引导程序/ 该目录包含通过 run 函数引导框架的 application.php 文件和自动加载 PHP 文件的 autoload.php 文件。 存储/ 日志、文件缓存和用户生成的文件。
身份验证和授权呢? 我的架构是否需要一个额外的层,模型-视图-控制器-数据访问-(中间件或路由器) 其余的 api 将如何与其他层交互? 例如,(中间件或路由器)层是否与控制器交互,然后控制器与每个身份验证和授权过程的数据访问层交互
我将附上当前阶段的简单实现来回顾我的想法。https://github.com/mahmoudahmedd/i-am-asking-for-feedback
任何其他 cmet 我将不胜感激,最后感谢。
【问题讨论】:
【参考方案1】:很好的解决方案:学习***框架的基础应用。
类模型与模型内部的 DataAccess 一起使用 模型必须扩展模型 控制器包含“action...”方法来包装模型方法:“actionGet”、“actionCreate”、“actionDelete”等。Route:namespace/controller/action
,例如:api/user/get
call Controller\Api\User::actionGet()
。李>
例如:https://github.com/koseven/koseven/blob/devel/system/classes/KO7/Controller.php , https://github.com/koseven/koseven/blob/devel/system/classes/KO7/Controller/Template.php
【讨论】:
很好的建议...我真的在考虑学习***框架的基础应用程序。但是我有一个问题当我下载特定的框架(例如laravel)时会有不可见的文件(路由器实现等)......我不知道你有没有解决方案 “不可见的文件”是什么意思?你需要一个应用准系统,而不是基于它的特定应用。 例如.... Illuminate\Routing\Router (github.com/laravel/laravel) 实现代码在哪里? 您以前不使用 Composer 吗? getcomposer.org/doc/00-intro.md 一般情况下你需要框架 + 应用,github.com/laravel/laravel - 它只是应用 真的谢谢你...我会尝试遵循这个模式:)以上是关于关于 REST API 和软件架构风格的建议 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章