Anypoint Platform RAML模拟服务中的响应标头“Content-Type”不正确
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Anypoint Platform RAML模拟服务中的响应标头“Content-Type”不正确相关的知识,希望对你有一定的参考价值。
我正在使用Mulesoft Anypoint Platform来设计REST API。我期待REST API的JSON响应,但我得到了XML响应。
我写了下面的RAML文件 -
#%RAML 1.0
baseUri: https://mocksvc.mulesoft.com/mocks/aa0b3fb6-9fd7-4196-991e-d030a25bc84b #
title: American Flights API
version: 1.0
mediaType: application/json
/flights:
post:
body:
application/json:
example:
{
"code": "GQ574",
"price": 399,
"departureDate": "2016/12/20",
"origin": "ORD",
"destination": "SFO",
"emptySeats": 200,
"plane": {"type": "Boeing 747", "totalSeats": 400}
}
responses:
201:
body:
application/json:
example: |
{"Message": "Flight added (but not really)"}
我得到的答复如下 -
<response>
<Message>Flight added (but not really)
</Message>
</response>
在我的RAML响应主体中,我提到了application / json。所以不确定为什么它没有显示我在例子中写的JSON响应以及为什么它在响应代码中返回“application / xml”时我没有提到“application / xml”。
响应标头具有Content-Type“application / xml”
content-type:
application/xml; charset=utf-8
date:
Tue, 20 Feb 2018 15:54:26 GMT
server:
nginx
vary:
X-HTTP-Method-Override, Accept-Encoding
x-newrelic-app-data:
PxQFUVNQCwQTUVhXDwcDUFITGhE1AwE2QgNWEVlbQFtcCxYkSRFBBxdFXRJJM3dgZEtOPGttGAsLUl1APjpMSh5IB0sQZGgdHU8QRR5DH1JIBhlRV1MLBQlXVlcbEwBQRh0UVVEHAAYBAVkECg8FCgNHFQdQDUAHOQ==
x-powered-by:
Express
x-request-id:
7a6ebcf4-cc45-491c-8622-00fad8ef3a3e
content-length:
76
connection:
keep-alive
我想知道如何将Content-Type更改为“application / json”作为响应。
请帮忙。
正文中指定的内容类型应该是application / json而不是application / xml
responses:
201:
body:
application/json:
example: |
{"Message": "Flight added (but not really)"}
在设置内容类型的代码上,您可以尝试在HTTP组件上添加HTTP Response Builder
<http:listener config-ref="HTTP_Listener_Configuration" path="/sample" allowedMethods="get" doc:name="HTTP" >
<http:response-builder>
<http:header headerName="Content-Type" value="application/json"/>
</http:response-builder>
</http:listener>
或者尝试在流程结束时使用Property Component
<set-property propertyName="Content-Type" value="application/json" doc:name="Property"/>
我之前使用的是Mozilla firefox,我遇到的问题是服务在“application / xml”中返回响应而不是我在RAML中编写的“application / json”。
现在我登录Chrome和Chrome中的任何一个平台,它运行正常。模拟服务返回示例和JSON格式中提供的响应。
仍然不确定为什么它在不同的浏览器中表现不同。
以上是关于Anypoint Platform RAML模拟服务中的响应标头“Content-Type”不正确的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Anypoint Studio 项目中更改 RAML 版本
如何在 Anypoint Studio 和 Design Center 之间进行 RAML 同步
如何在 MuleSoft 中将分支合并为 master(Anypoint 设计中心)