构建 RESTful API 和 Web 应用程序时的最佳实践 [关闭]

Posted

技术标签:

【中文标题】构建 RESTful API 和 Web 应用程序时的最佳实践 [关闭]【英文标题】:Best practice when building both RESTful API and web application [closed] 【发布时间】:2019-03-24 06:24:41 【问题描述】:

所以我正在使用Laravel 5.7 开发一个项目,并且我想包含一个 RESTful API 以使移动版本与应用程序通信,当然还有网络应用程序本身。

我的问题是,关于路由和控制器的最佳实践是什么,我在这里和其他博客中阅读了一些建议并感到困惑,有些人建议我应该声明一个路由文件供web 应用程序和 API 并为 eg("web" and "mobile") 添加一个标识符,并基于它返回一个视图或 JSON 数据,其他人建议将路由分开(api 和 web ) 但将它们指向相同的控制器方法,认为它比第一个建议更好。

感谢您的帮助。

【问题讨论】:

Laravel 已经为你将路由分成 web 和 api 组。您应该阅读文档以查看差异,Laravel 有据可查。最佳实践是基于意见的,并且与 SO 无关。 请看laravelbestpractices.com/#site-header和github.com/alexeymezenin/laravel-best-practices 我使用胖模型方法。将所有真正的逻辑放在模型中,控制器只指向这些模型。我还喜欢将所有路由放入 API.php 文件中,并使用护照进行身份验证。您可以使用 CSRF 令牌验证在 Web 上进行所有操作,但我只是喜欢从护照升级安全性,而且开箱即用非常容易设置。 CRUD 逻辑也保留在控制器中,只是更容易并且没有理由为其实例化新模型。除此之外,阅读文档并玩得开心。 @Devon 是的,我知道并阅读了文档,但是当我看到其他人使用不同的方法时,我感到很困惑,但无论如何,谢谢您的回答。 @Egretos 会检查一下,谢谢。 【参考方案1】:

Laravel 将 api 路由与 web 路由分开。 Web 路由位于 routes/web.php 文件中。 API 路由在 routes/api.php 文件中。

令人讨厌的是将 API 部分的逻辑与 Web 部分的逻辑分开。 这里的解决方案仍然很简单。我要做的是创建一个文件夹,我在app/Http/Controllers 中调用 API;我放在这个文件夹中的所有控制器都在 App\Http\Controllers\API 命名空间中。在对应的路由文件中,只需在控制器名称前加上API\标志即可。

【讨论】:

是的,这是更好的方法,但是是否可以让 API.php 和 WEB.php 路由指向控制器中的相同方法,而不会影响方法的功能。 是的,我和你有冲突,但难点在于api和web返回的区别 @alihussein 应该没有理由将 web 和 api 路由指向相同的方法。如果您发现自己这样做,您要么在控制器中放置了太多逻辑,要么您应该考虑使用自己的 API 而不是构建冗余方法。

以上是关于构建 RESTful API 和 Web 应用程序时的最佳实践 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

一基础项目构建,引入web模块,完成一个简单的RESTful API

C# Web Api一个小例子

Spring Boot2 系列教程 | 集成 Swagger2 构建强大的 RESTful API 文档

Node.JS RESTful API 的最佳身份验证方法

使用 Apache Shiro 保护 RESTful Web 服务

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