为什么要为RESTful API创建单独的应用程序?

为什么要为RESTful API创建单独的应用程序?,api,rest,yii2,Api,Rest,Yii2,Yii 2的指南中说: 虽然不是必需的,但建议您开发RESTful API作为一个独立的应用程序,不同于您的Web前端和 后端便于维护 资料来源: 这是什么意思?这是一个完全不同的应用程序,还是与“普通”web应用程序位于同一文件夹中?我刚刚开始使用我的应用程序,所以我可以或多或少地轻松更改内容。但我想知道:如果我要创建另一个应用程序,那么我的业务逻辑将无法访问 为什么以及如何创建另一个应用程序?当不需要时?这意味着您必须创建一个类似前端或后端的应用程序(Yii 2高级应用程序模板)), 您需要

Yii 2的指南中说:

虽然不是必需的,但建议您开发RESTful API作为一个独立的应用程序,不同于您的Web前端和 后端便于维护

资料来源:

这是什么意思?这是一个完全不同的应用程序,还是与“普通”web应用程序位于同一文件夹中?我刚刚开始使用我的应用程序,所以我可以或多或少地轻松更改内容。但我想知道:如果我要创建另一个应用程序,那么我的业务逻辑将无法访问


为什么以及如何创建另一个应用程序?当不需要时?

这意味着您必须创建一个类似前端或后端的应用程序(Yii 2高级应用程序模板)), 您需要做的是创建另一个与后端或前端相同的目录调用'api',它将包含与后端|前端相同的文件夹结构,但资产、视图、小部件等除外

基本上你需要这样的文件夹结构

api

-config
-modules
--v1
---controllers
---models
-runtime
-tests
-web

backend
common
console
environments
frontend

如果您打算使用yii2basic应用程序模板来开发restapi,那么它是可行的。创建模块调用“api”,并创建子目录调用“v1”作为子模块。

使用其中一种文件夹结构有一个优点,因为您不必太担心路由问题

https://domain.com/api/v1/products
下面是一个使用高级模板的RESTfulAPI的好例子


API和RESTFull API是不同的。RESTFull API必须有REST标准。基本上,这就是为什么API被开发为单独的应用程序。在普通应用程序中,我们为CRUD函数创建4个动作。但在yii2restfullapi中,我们只为所有CRUD函数创建一个操作。(控制器从REST活动控制器-yii\REST\ActiveController扩展而来)。在核心代码中,您可以为不同的标题找到4个操作:GET、POST、PUT和DELETE

'index' => ['GET', 'HEAD'],
'view' => ['GET', 'HEAD'],
'create' => ['POST'],
'update' => ['PUT', 'PATCH'],
'delete' => ['DELETE'],

对于身份验证,我们基本上可以使用“HTTP基本身份验证”

本文解释了这个想法和原因,还为您提供了一个名为“yii2高级api”的启动项目:

IMHO如果您的网站上需要Angular.js或Knockout.js AJAX调用的REST api,那么作为一个单独的应用程序来实现它是一种开销。因为跨域AJAX调用(特别是POST请求)会有问题


我认为在前端为RESTAPI制作一个模块(API)就足够了,这已经非常有用了。谢谢我认为“为什么”的答案是API与其他应用程序没有太多共同之处。业务逻辑被移动到api的用户,也就是说,它可以包含在JavaScript逻辑中。api和RESTFull api是不同的。RESTFull API必须有REST标准。基本上,这就是为什么API被开发为单独的应用程序。在普通应用程序中,我们为CRUD函数创建4个动作。但在yii2restfullapi中,我们只为所有CRUD函数创建一个操作。(控制器从REST活动控制器-yii\REST\ActiveController扩展而来)。在核心代码中,您可以找到不同标题的4个操作:GET、POST、PUT和DELETE('index、view'=>['GET'、'HEAD']、'create'=>['POST']、'update'=>['PUT'、'PATCH']、'DELETE'=>['DELETE'])。对于身份验证,基本上使用'basic authentication'Hi rocsch,这一部分我不清楚“业务逻辑被移动到api的用户,也就是说,它可以包含在JavaScript逻辑中。”我现在的理解是,如果您有RESTful api,那么您所做的事情与普通web应用程序不同。《Yii指南》中说:RESTful就是资源。可以我们可以利用资源做什么?只是获取、发布、删除等等。原始动作。但在某些地方,您可能需要像convertIt()这样的东西。更复杂的动作。在我看来,这是商业逻辑。作为RESTful API的用户,这可能是某些JavaScript代码的一部分。convertIt()对rest api执行所需的调用以实现其目标。这有意义吗?同意,但在某些情况下,如发送电子邮件功能以重置密码或进行用户注册,尽管这不是资源,但我们必须使用REST标准的自定义操作。当然,我们可以使用JavaScript语言(AngularJs)在客户端应用程序中构建业务逻辑(例如:在Yi2 Advance模板中的后端和前端)。我想AngularJs非常适合使用API。谢谢Chanuka已经发布了相应github项目的链接。这可能也会有所帮助。
'index' => ['GET', 'HEAD'],
'view' => ['GET', 'HEAD'],
'create' => ['POST'],
'update' => ['PUT', 'PATCH'],
'delete' => ['DELETE'],