1

我正在使用 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 请求获取数据,我不确定密钥及其对应的值是什么,我所做的只是获取数据,解析它并将其发送给用户。在这种情况下如何创建 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> 
4

1 回答 1

4

您的问题似乎更多是关于 JSON Schema 而不是 RAML。本质上,您是在问如何支持 JSON 模式中的未知字段。

答案是添加:

"additionalProperties": true

到您的 JSON Schema 对象定义。

我强烈建议,如果已知一组字段,则在架构中明确声明它们:您的 API 用户会为此感谢您。

此外,如果保证其中某些字段存在,请同时标记它们required

APIkit 处理附加属性应该没有问题。

于 2015-02-26T00:01:56.690 回答