为 get/post 的动态 key/values 创建 RAML 文件
creating RAML file for dynamic key/values for get/post
我使用 Mule 应用程序从另一个由 HTTP 端点调用的系统获取数据,使用 java 和 jersey api 来获取其余组件。
下面给出了示例输入数据,这里的键和值不固定,可能会根据用户要求而变化。数组大小将增加可能是 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 请求获取数据,我不确定键及其对应值是什么,我只是获取数据、解析它并发送它给用户。我如何在这个 situation.Will mule APIkit 上创建 RAML 模板,RAML 可以在这里工作?
我现有的代码:
@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>
您的问题似乎更多地是关于 JSON 模式而不是 RAML。本质上,您是在询问如何在 JSON 架构中支持未知字段。
答案是添加:
"additionalProperties": true
到您的 JSON 模式对象定义。
我强烈建议,如果已知一组字段,请在您的模式中明确声明它们:API 的用户会为此感谢您。
此外,如果其中一些字段保证存在,请将它们也标记为 required
。
APIkit 应该可以轻松处理其他属性。
我使用 Mule 应用程序从另一个由 HTTP 端点调用的系统获取数据,使用 java 和 jersey api 来获取其余组件。
下面给出了示例输入数据,这里的键和值不固定,可能会根据用户要求而变化。数组大小将增加可能是 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 请求获取数据,我不确定键及其对应值是什么,我只是获取数据、解析它并发送它给用户。我如何在这个 situation.Will mule APIkit 上创建 RAML 模板,RAML 可以在这里工作?
我现有的代码:
@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>
您的问题似乎更多地是关于 JSON 模式而不是 RAML。本质上,您是在询问如何在 JSON 架构中支持未知字段。
答案是添加:
"additionalProperties": true
到您的 JSON 模式对象定义。
我强烈建议,如果已知一组字段,请在您的模式中明确声明它们:API 的用户会为此感谢您。
此外,如果其中一些字段保证存在,请将它们也标记为 required
。
APIkit 应该可以轻松处理其他属性。