我正在使用Mule应用程序从另一个系统获取数据,该数据由HTTP端点调用,使用带有jersey api的java来获取其余组件。
下面给出了示例输入数据,这里的键和值不是固定的,它可能会根据用户请求而有所不同。数组大小将增加可能是2到n个条目。它适用于基于Mule和Java rest的组件。
输入JSON数据:
[
{
"Company": "BEG1",
"Account": "10011",
"Deptid": "111",
"Location": "SM1",
"Transaction Date": "2014-07-15",
"Description": "Invoice1",
"Debit": 0,
"Credit": 13.46,
"Invoice Nbr": "16824321"
},
{
"Company": "BEG92",
"Account": "10092",
"Deptid": "222",
"Location": "SL2",
"Transaction Date": "2014-07-19",
"Description": "Invoice End2",
"Debit": 13.46,
"Credit": 0,
"Invoice Nbr": "168243292"
}
]
计划使用RAML迁移到APIkit:如何为上述情况制作RAML模板?由于密钥是动态的,所以这看起来并不简单。
2)对于GET采用相同的方法,我将获取我的get请求的数据,我不确定什么是密钥及其相应的值,只是我做的是获取数据,解析它并将其发送到用户。如何在这种情况下创建RAML模板。使用RAML的mule APIkit会在这里工作吗?
我现有的代码:
@POST
@Path("/post")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public List<GLExport> postOperation(@Payload String content) throws ParseException {
JSONParser jsonParser = new JSONParser();
Object jsonObjectInstance =null;
jsonObjectInstance = jsonParser.parse(new StringReader(content));
...
return glExportList;
<http:inbound-endpoint exchange-pattern="request-response" host="${hostname}" port="${glport}" path="QBJournalExport/QBGLRest" doc:name="HTTP"/>
<jersey:resources doc:name="REST">
<component class="com.qb.rest.GLExportService"/>
</jersey:resources>
答案 0 :(得分:3)
看来你的问题更多的是关于JSON Schema而不是RAML。实质上,您正在询问如何在JSON模式中支持未知字段。
答案是添加:
"additionalProperties": true
到您的JSON Schema对象定义。
我强烈建议,如果已知字段集,则在模式中明确声明它们:您的API用户会感谢您。
此外,如果保证其中一些字段存在,请将它们标记为required
。
APIkit在处理其他属性时应该没有问题。