关于 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 和软件架构风格的建议 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

分布式系统核心:REST风格的架构,REST成熟度模型及REST API管理

Restful Api 总结

我所理解的RESTful Web API [Web标准篇]

软件定义网络基础---REST API概述

理解本真的REST架构风格

转:理解本真的 REST 架构风格