检查 RoR json API
Inspect RoR json API
有什么方法(我的意思是 RoR 代码)来枚举
- 现有 API 个端点
- 输入数据数据类型
- 输出数据数据类型
- 其他
假设我们在 rails 上使用 ruby 并且我们的 api 基于模型及其类型。
(类似于架构 here )
什么是可能的以及如何实现的?
什么是不可能的,为什么?
这通常是不可能的。
Rails 应用程序中的控制器(和模型)在各个层上定义要接受的数据。这通常不是以静态格式定义的,而是通过分层验证过程定义的(例如,在带有 strong_parameters 的控制器和带有验证的模型上。
由于这些验证可以使用 Ruby 代码定义任意复杂的业务规则,因此通常您只能通过尝试将给定的数据结构传递给应用并检查它是否接受来检查是否接受了给定的数据结构没有任何错误。
话虽如此,有些 gem 允许您定义 "abstract" API 模式,这些模式可能会被外部客户端使用并用于验证您应用中的数据。这里的例子是 trailblazer, dry-validation, json-schema 和其他。请注意,这些方法通常需要遵循这些 gem 的架构要求,这可能会严重影响您设计应用程序的方式。
有什么方法(我的意思是 RoR 代码)来枚举
- 现有 API 个端点
- 输入数据数据类型
- 输出数据数据类型
- 其他
假设我们在 rails 上使用 ruby 并且我们的 api 基于模型及其类型。
(类似于架构 here )
什么是可能的以及如何实现的? 什么是不可能的,为什么?
这通常是不可能的。
Rails 应用程序中的控制器(和模型)在各个层上定义要接受的数据。这通常不是以静态格式定义的,而是通过分层验证过程定义的(例如,在带有 strong_parameters 的控制器和带有验证的模型上。
由于这些验证可以使用 Ruby 代码定义任意复杂的业务规则,因此通常您只能通过尝试将给定的数据结构传递给应用并检查它是否接受来检查是否接受了给定的数据结构没有任何错误。
话虽如此,有些 gem 允许您定义 "abstract" API 模式,这些模式可能会被外部客户端使用并用于验证您应用中的数据。这里的例子是 trailblazer, dry-validation, json-schema 和其他。请注意,这些方法通常需要遵循这些 gem 的架构要求,这可能会严重影响您设计应用程序的方式。