为 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 应该可以轻松处理其他属性。