UnsupportedMediaTypeException RAML Mule

时间:2016-09-28 16:37:22

标签: mule raml apikit

要求 - 用户将点击一个URL并在呼叫计算机上下载CSV。

实施 下面是我的RAML(1.0)定义

  /{format}:
    is: [ genericErrorResponsesCompliant ]
    get:
      description: Get/Download list of all ACTIVE accounts in a given format (CSV/JSON) default is JSON
      body:
        application/json:
      responses:    
        200: 
          body: 
            application/octet-stream:
        202:
          body:
            application/json:                  
        404:
          body:
            application/json:
              example: !include resources/json/example/error/error-resource-not-found-response-example.json 

问题: 使用 -

发送请求时
  1. API-Console 用于调用API,可以看到CSV响应
  2. postman - 我在Mule控制台中收到UnsupportedMediaTypeException
  3. postman (当传递Content-Type application / json时)在响应部分中看到CSV输出
  4. 浏览器我收到错误UnsupportedMediaTypeException
  5. 问题 如果我没有设置内容类型,那么API-Kit将无法通过验证并发送异常。有没有办法将默认的Content-Type设置为 application / json ,最终用户可以从浏览器访问url并下载csv?

    我应该能够克服API-Kit抛出的异常

    如果您需要更多信息,请告诉我,但我很难完成这项工作。任何帮助将不胜感激。

    异常     根异常堆栈跟踪:     org.mule.module.apikit.exception.UnsupportedMediaTypeException     在org.mule.module.apikit.HttpRestRequest.handleUnsupportedMediaType(HttpRestRequest.java:306)     at org.mule.module.apikit.HttpRestRequest.negotiateInputRepresentation(HttpRestRequest.java:300)

    环境 Studio版本6.1.1上的Mule 3.8运行时

2 个答案:

答案 0 :(得分:1)

这是因为您有GET请求:

get:
      description: Get/Download list of all ACTIVE accounts in a given format (CSV/JSON) default is JSON
      body:
        application/json:

删除body:application / json在GET请求中不需要它。然后,它将允许您在没有Content-type的情况下调用API。

答案 1 :(得分:0)

我希望它有效。 得到同样的例外。在@ ryan-carter建议之后的RAML

/{format}:
    is: [ genericErrorResponsesCompliant ]
    get:
      description: Get list of all ACTIVE accounts for a given country in a given format (CSV/JSON) default is JSON
      headers:
        Content-Type:
          default:
            '*/*'
      responses:    
        200: 
          body: 
            application/octet-stream: