0

要求- 用户将点击一个 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 

ISSUE : 当使用发送请求时 -

  1. API-Console调用 API,看到 CSV 响应
  2. 邮递员- 我在 Mule 控制台中得到 UnsupportedMediaTypeException
  3. 邮递员(当 Content-Type application/json 被传递时) CSV 输出显示在响应部分
  4. 浏览器我收到错误 UnsupportedMediaTypeException

问题 如果我没有设置内容类型,那么 API-Kit 验证失败并发送异常。有没有办法将默认的 Content-Type 设置为application/json并且最终用户可以从浏览器访问 url 并下载 csv?

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

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

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

Studio 6.1.1 版环境 Mule 3.8 运行时

4

2 回答 2

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。

于 2016-09-28T18:09:46.480 回答
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:
于 2016-09-29T08:25:53.057 回答