Express 如何在使用FeathersJS';什么是看似限制性的api方法?
我想知道FeathersJS是否适合我的需要。我已经看了几个例子和用例。FeatherJS使用一组请求方法:Express 如何在使用FeathersJS';什么是看似限制性的api方法?,express,endpoint,feathersjs,Express,Endpoint,Feathersjs,我想知道FeathersJS是否适合我的需要。我已经看了几个例子和用例。FeatherJS使用一组请求方法:find、get、create、update、patch和delete。没有其他方法可以实现和使用,更不用说自定义方法了,如上所确认的 让我们想象一下,在这个应用程序中,用户可以保存他们的应用程序设置。如果不考虑以下方法约定,我将创建一个端点来描述用户执行的操作。在这种情况下,我们可以有,例如:/saveSettings。知道不会有任何设置查找、-创建、-更新(只有一些-修补)或-删除。我
find
、get
、create
、update
、patch
和delete
。没有其他方法可以实现和使用,更不用说自定义方法了,如上所确认的
让我们想象一下,在这个应用程序中,用户可以保存他们的应用程序设置。如果不考虑以下方法约定,我将创建一个端点来描述用户执行的操作。在这种情况下,我们可以有,例如:/saveSettings
。知道不会有任何设置查找、-创建、-更新(只有一些-修补)或-删除。我可能还需要一个/getSettings
路由
我的问题是:是否可以将每个操作简化为这些请求方法?对我来说,这些操作强烈地绑定到特定的集合/模型。有时,我们需要创建不绑定到单个集合且可能与多个集合/模型交互的操作
对于这个例子,我猜它将被翻译成FeathersJS,带有一个名为设置
的服务,该服务将包含两种方法:get()
和补丁()
如果这是正确的方法,那么在我看来,这个解决方案更面向服务器,而不是面向客户端,从这个意义上讲,我们必须知道,客户端,什么样的基础集合将被更改或影响。感觉上,由于端点和服务之间没有某种路由,我们正在失去某种程度的自由(就像我们在vanilla ExpressJS中所做的那样)
这里还有一个例子:我有一个游戏角色,可以提高技能。当用户决定提高某项技能时,会向服务器发送一个请求。这个端点可以像POST:/skillUp
在FeathersJS中是什么?通过实现SkillUpService#创建
我希望你明白我在这里要强调的问题。关于如何在这个特定框架中组织API,您有什么想法或建议吗?我不是featherJs专家,但如果您用良好的逻辑构建数据库和模型, 您只需要以下方法: 对于设置示例,
saveSettings
对应于setting.patch({options})
因此对应于路由settings/:id?选项(方法补丁)
,因为用户已经有一些默认设置(由用户创建)getSetting
将对应于设置。查找(查询)
要创建用户和设置,我想您可以在调用用户创建路由时调用setting.create({defaultOptions})
。这是正确的方法
对于
skillUp
路径,这取决于数据库的概念,但我猜它类似于一个表,为您提供级别/技能/字符,因此您需要为这个特定的表提供服务,并调用skillLevel.patch({character,level})
,除了@gui3已经给出的正确答案之外,可能值得指出的是,Feathers有意进行限制是为了帮助您创建API,这些API关注于资源(数据)和您可以在其上执行的一组已知方法
除了您链接的答案之外,还将对其进行更详细的解释,有关RESTAPI设计的介绍以及Feathers为什么会这样做的原因,请参见。这些是帮助将internet(特别是HTTP协议)扩展到今天的规模的最佳实践,可以很好地用于创建API。如果你仍然想使用你建议的路线(这不是一个休息),那么羽毛不是工作的合适工具。
你可能要考虑的一个策略是在帖子正文中使用一个请求参数,如<代码> {“动作”:“类型”}//Cord>,并有条件地执行所需的动作。我们将讨论此策略的一个示例。
感谢您花时间回答。对我来说,这是一种组织API的全新方式,肯定有很多东西需要考虑。起初困扰我的是FeathersJS在路由和可用请求方法上设置的约束。谢谢你的回答。在阅读文档时,我没有找到此常见问题页面。看到API以这种方式构建是非常有启发性的。看完视频后,我有一个似乎相关的问题:在您展示的两个客户端方法中,使用两个不同的参数调用submissionService#patch
,您所说的“您将使用服务器上的挂钩完成此操作”是什么意思?。