Rails中是否有模式或最佳实践,我们可以在一个地方指定API中使用的参数的名称/符号,以便我们可以在整个代码和测试中引用它?
我们的应用程序需要用户通过HTTP POST将参数传递给我们的API。我们使用符号来获得如下值:
first_name = params[:firstname]
last_name = params[:lastname]
...
我们还在RSpec测试中设置了参数的值:
params = {
firstname: 'John',
lastname: 'Doe',
...
}
显然,上面的例子相当简单,在我们的应用程序中,我们有更多的参数。因此,最好有一组可以使用的确定的API参数。主要好处是其他开发人员可以知道应用程序中可用的参数。此外,我们希望防止输入错误的符号。
我当时的想法是使用一个名为API的模块,其中定义了一些常量:
Module API
FIRST_NAME = :firstname
LAST_NAME = :lastname
...
end
然后我们可以按如下方式使用该模块:
first_name = params[API::FIRST_NAME]
last_name = params[API::LAST_NAME]
...
这种方法是否正确?是否会有性能成本?
注意:每次通话都会有相同的参数。此外,参数可能会随着我们目前处于开发的早期阶段而发生变化,最终的API字段集及其名称尚未确定。
答案 0 :(得分:3)
您的API可能不会为每个调用都具有相同的参数。此外,您可能不希望经常更改参数,除非您是API的唯一消费者,因为API中的更改会破坏客户的内容。由于这些原因,我不认为对模块中的参数进行实例化将会给你带来那么多。
虽然有很多地方可以尝试删除冗余代码,但我怀疑您提出的策略是否会长期适用于您。如果您发现自己在测试中经常重复(API当然会发生这种情况),您可能需要查看rack-test-rest,这是一个可以处理API测试很多痛苦的宝石。
基本上,它会对您未提供的参数做出合理的假设,以使您能够跟踪代码http状态代码,响应等。希望这会有所帮助!