ApikitRuntime异常:无效的API描述符+ Raml解析器未捕获异常:null,这是什么意思?

时间:2018-01-09 03:32:26

标签: mule anypoint-studio apikit

我生成了一个apikit路由器,它路由到raml文件并从中生成一个xml流。

#%RAML 1.0
title: mocktest
mediaType: application/json

/mocktest:
  description: Describes a list of Employees.

  get:
    description: Request Body for a new Employee Post Request.
    responses: 
      200:
        description: OK Responsebody for a new EMployee POst Req.
        body: 
          application/json:
            example:  |
              {
              "employeeId":2231,
              "employeeName":"Lorem Ipsum"
              }

当我开始运行项目时,我收到了错误

org.mule.module.apikit.exception.ApikitRuntimeException:无效的API描述符 - 找到错误:1个Raml解析器未捕获异常:null

现在,我的问题是:有人可以向我解释这个例外是什么意思吗?我想确定导致异常的原因。

我试图找到关于此类异常的文档,但我没有找到相关的文档(如果有的话,请帮我找到链接)。

[编辑]

我的RAML定义只是用于测试的模拟:

{{1}}

如果这有帮助:我没有向apikit-router流添加http-listener 因此,理论上(我的)它将使用主HTTP-Listener路由到xml来自RAML文件的生成流。

主要目标:是根据inboundProperty路由消息,无论其值是“后台”还是“客户端”,这是apikit-router在选择子流中的原因。

1 个答案:

答案 0 :(得分:0)

好的,我知道你要做什么,感谢额外的信息。

RAML是希望使用您服务的客户的“合同”。它列出了如何打电话给你的服务;什么是端点地址,使用什么方法,我的请求有效负载应该是什么格式。以及预期的信息。利用RAML文件中的所有信息,他们应该能够与您的服务集成,而无需联系开发人员。

MuleSoft已将RAML紧密集成到他们希望您遵循的API开发周期中。其中一个方面是APIkit路由器组件。它根据HTTP请求自动在接口(您的RAML文件)和后端流之间路由请求。

但是在您的方案中,您将在APIkit之前添加http端点和自定义逻辑。这些更改打破了RAML文件和代码之间的强制链接。请注意,您的自定义流接收入站属性“role”,但未在RAML文件中指定。在您的服务入职时,您的客户不会意识到此属性存在。 Mulesoft希望防止这种不匹配发生,这就是你得到错误的原因。

我建议您将RAML文件修改为:

...
get:
    description: Request Body for a new Employee Post Request.
    queryParameters:
      role: 
    responses:
...

和您的流程

         

<flow name="get:/mocktest:backoffice-config">
    <choice doc:name="Choice">
        <when expression="#[message.inboundProperties.role == 'backoffice']">..</when>
        <otherwise>...</otherwise>
    </choice>
</flow>

希望这是有道理的。

相关问题