Express 如何在使用FeathersJS';什么是看似限制性的api方法?

Express 如何在使用FeathersJS';什么是看似限制性的api方法?,express,endpoint,feathersjs,Express,Endpoint,Feathersjs,我想知道FeathersJS是否适合我的需要。我已经看了几个例子和用例。FeatherJS使用一组请求方法:find、get、create、update、patch和delete。没有其他方法可以实现和使用,更不用说自定义方法了,如上所确认的 让我们想象一下,在这个应用程序中,用户可以保存他们的应用程序设置。如果不考虑以下方法约定,我将创建一个端点来描述用户执行的操作。在这种情况下,我们可以有,例如:/saveSettings。知道不会有任何设置查找、-创建、-更新(只有一些-修补)或-删除。我

我想知道FeathersJS是否适合我的需要。我已经看了几个例子和用例。FeatherJS使用一组请求方法:
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
,您所说的“您将使用服务器上的挂钩完成此操作”是什么意思?。