我的http api使用JSON传递参数,它看起来像:
{
param1: xxx
param2: xxx
param3: xxx
}
但是,我的系统是一个插件系统,每个插件需要在JSON主体中拥有自己的参数,所有插件将相互配合以产生最终结果。
例如,让我们说api是CreateACar {
name: xxx
description: xxx
model: xxxx
}
基础api有三个基本元数据字段。系统有插件,如:
CarColorPlugin: needs parameters as
{
doorColor: xxx
roofColor: xxx
decoratorColor: xxx
}
TirePlugin: needs parameters as
{
tireSize: xxx
tireBrand: xxx
}
WindShieldPlugin: needs parameters as
{
brand: xxx
needRearWindShield: true or false
}
你可以想象这种插件尽可能多。现在的问题是所有插件都需要api CreateACar来携带他们的信息,有时后来新的插件可能会加入系统,因此CreateACar必须可扩展以满足未来的需求。
现在我正在考虑在JSON主体中放置一个映射并将api CreateACar传递给所有插件,以便它们可以自己获取参数。
然而,这个设计对我来说有点难看。我已经研究了一段时间,具有漂亮api的项目通常具有有限的业务领域。对于具有广泛意外业务领域的项目,通常在API体中使用XML等可扩展数据结构,但到目前为止我看到的所有这些API都很混乱,尤其是没有良好文档的这些API。
答案 0 :(得分:0)
是的 - 大概你的许多请求会要求一辆汽车,而不是所有汽车。
答案 1 :(得分:0)
这是我的整体设计建议:
"color"
,"wipers"
等)的方法,以及一个获取Map
并返回插件数据对象的方法。收集Map<String,Plugin>
。getPlugins()
类上编写一个Car
方法,该方法没有支持字段,而是整理嵌套{{1}中应用于Car
的所有插件的信息}}。Map
方法,该方法获取嵌套映射,遍历键,按名称查找相应的工厂插件,并从JSON对象数据中重新水化插件数据对象。