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

时间:2014-10-07 07:15:17

标签: api rest yii2

在Yii 2指南中说:

  

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

来源:RESTful Web Services - Quick Start

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

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

3 个答案:

答案 0 :(得分:14)

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

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

api

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

backend
common
console
environments
frontend

如果您要使用 Yii 2基本应用程序模板来开发rest api,那么它是可行的。创建模块调用'api'并创建子目录调用'v1'作为子模块。 (Yii doc -A module may consist of sub-modules.) (GiovanniDerks - backend sub-modules)

-modules
--api
---v1
----controllers
----models

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

https://domain.com/api/v1/products

以下是使用高级模板

的RESTful API的一个很好的示例

Setup RESTful API in Yii2(budiirawan)

API& RESTFull API是不同的。 RESTFull API必须具有REST标准。基本上这就是API作为单独的应用程序开发的原因。在普通应用程序中,我们为CRUD函数创建了4个动作。但在yii2 RESTFull API中,我们只为所有CRUD函数创建一个动作。 (控制器从REST Active Controller扩展 - yii \ rest \ ActiveController)。在核心代码中,你可以找到针对不同标题的4个动作GET,POST,PUT&删除。

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

用于身份验证基本上我们可以使用'HTTP基本身份验证'

答案 1 :(得分:1)

本文解释了这个想法及其原因,并为您提供了一个名为" yii2-advanced-api":http://budiirawan.com/setup-restful-api-yii2/

的初学者项目

答案 2 :(得分:1)

恕我直言,如果你需要为你的网站上的Angular.js或Knockout.js AJAX调用提供REST API,那么将它作为一个单独的应用程序来进行。因为您将遇到跨域AJAX调用的问题(特别是对于POST请求)。

我认为在REST API的前端创建一个模块(API)就足够了