关于 REST API 和软件架构风格的建议
Suggestions on REST API & Software Architecture Style
首先我是学生,所以我需要知道化合物之间是如何相互作用的,也许以后下次我会用一个框架来做,但首先我需要做的知道如何从头开始构建软件。
我的项目将是 Web 和移动应用程序,所以我决定为两者创建一个休息 api...我将在 Native PHP.
中实现我的项目
- 软件架构风格的最佳实践是什么?
但我不知道什么是我休息的最佳实践软件架构 api 多层(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 组件,如控制器、视图、模型、数据访问。
核心/
该目录包含路由器 class 和基本 classes
Bootstrap/
该目录包含通过 运行 函数引导框架的 application.php 文件和自动加载 PHP 文件的 autoload.php 文件。
存储/
日志、文件缓存和用户生成的文件。
认证授权呢?
我的架构是否需要一个额外的层,模型-视图-控制器-数据访问-(中间件或路由器)
其余 api 将如何与其他层交互?
例如,对于每个身份验证和授权过程,(中间件或路由器)层是否与控制器交互,然后控制器与数据访问层交互
我将附上当前阶段的简单实现以回顾我的想法。
https://github.com/mahmoudahmedd/i-am-asking-for-feedback
任何其他意见,我将不胜感激,最后谢谢。
很好的解决方案:学习顶级框架的基础应用程序。
- Class 模型在模型内部使用 DataAccess
- 模型必须扩展模型
- 控制器包含 'action...' 方法来包装模型方法:'actionGet'、'actionCreate'、'actionDelete' 等。路由:
namespace/controller/action
,例如:api/user/get
调用 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
首先我是学生,所以我需要知道化合物之间是如何相互作用的,也许以后下次我会用一个框架来做,但首先我需要做的知道如何从头开始构建软件。
我的项目将是 Web 和移动应用程序,所以我决定为两者创建一个休息 api...我将在 Native PHP.
中实现我的项目- 软件架构风格的最佳实践是什么?
但我不知道什么是我休息的最佳实践软件架构 api 多层(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 组件,如控制器、视图、模型、数据访问。
核心/
该目录包含路由器 class 和基本 classes
Bootstrap/
该目录包含通过 运行 函数引导框架的 application.php 文件和自动加载 PHP 文件的 autoload.php 文件。
存储/
日志、文件缓存和用户生成的文件。
认证授权呢?
我的架构是否需要一个额外的层,模型-视图-控制器-数据访问-(中间件或路由器)
其余 api 将如何与其他层交互? 例如,对于每个身份验证和授权过程,(中间件或路由器)层是否与控制器交互,然后控制器与数据访问层交互
我将附上当前阶段的简单实现以回顾我的想法。
https://github.com/mahmoudahmedd/i-am-asking-for-feedback
任何其他意见,我将不胜感激,最后谢谢。
很好的解决方案:学习顶级框架的基础应用程序。
- Class 模型在模型内部使用 DataAccess
- 模型必须扩展模型
- 控制器包含 'action...' 方法来包装模型方法:'actionGet'、'actionCreate'、'actionDelete' 等。路由:
namespace/controller/action
,例如:api/user/get
调用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