如何解决JAMstack约定是否与RESTful API设计兼容?
最近,我一直在Netlify上构建许多快速原型。我喜欢这项服务,因为它易于设置和部署。但是我一直遇到他们围绕API端点的JAMstacky约定与我自己的RESTful API设计背景之间的冲突。
更具体地说,假设我正在构建一个基本的CRUD API,可以在其中创建,获取一个,获取所有并更新某些资源类型。假设一个User
。如果我是从RESTful角度设计这些端点的,则它看起来像这样:
POST /users -> Create a user
GET /users -> Fetch all users
GET /users/{id} -> Fetch one user
PUT /users/{id} -> Update a user
现在,如果我要在AWS上进行设置(也许使用 lessless 框架),那么这些端点中的每个端点都是自己的lambda。但是Netlify没有提供这样的配置选项。大部分都很好。我讨厌配置。但是,使用Netlify很难完全实现这些端点。
特别是在这种情况下,Netlify会自动创建与文件名匹配的端点。因此,如果您有一个名为users.js
的文件,则会创建一个/users
端点。问题是,该文件将用于/users
的每个可能的排列。每个HTTP方法。每个子路线。他们都去了这个lambda。因此,为了实现RESTful API设计,我必须将所有内容放在一个lambda中,并从根本上使其成为路由器。这似乎打败了无服务器的整个想法。
通常,当您阅读Netlify示例时,它们遵循了JAMstack模式(我对此并不十分熟悉),它们不使用RESTful端点。相反,他们倾向于这样做:
POST /create-user -> Create a user
GET /fetch-users -> Fetch all users
GET /fetch-user?id={id} -> Fetch one user
POST /update-user -> Update a user
所以从某种意义上讲这是一个Netlify问题,从某种意义上讲是一个关于JAMstack模式的更大的问题。 JAMstack是否有固有的特性使其与REST不兼容?对于Netflify / JAMstack项目,是否有不同的约定倾向于替代REST?
解决方法
“ JAMstack是否具有与REST不兼容的固有特性?” 我会说不,因为它没有关系。您不是在Jamstack中构建API。您正在使用服务(Netlify),该服务支持与站点的其余部分一起运行的无服务器功能。请记住,Netlify无服务器功能只是一种选择。您可以设置自己的AWS设置并支持所需的机制,并且仍将其与Jamstack站点的其余部分结合使用。我喜欢Netlify的无服务器功能,但不适用于100%的用例。
我想我的想法是-Netlify试图使无服务器的开发人员可以轻松构建Jamstack站点,但是并不能涵盖所有用例。否则,您仍然可以在网站上使用自己的解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。