api - 如何使用不同的输入查询参数发送不同的 RAML 响应
问题描述
我有一个与 RAML 发送不同响应有关的问题。在下面的 RAML 中,我想根据查询参数发送响应。如果我的查询参数 (flightId) 是“F001”,我应该只得到数据 F001 的响应。但是我得到了响应中指定的所有数据的响应。我可以知道如何过滤不需要的数据。
#%RAML 1.0
baseUri: https://mocksvc.mulesoft.com/mocks/9b7a0390-ecf4-4ff4-b307-0b7d87ed9495 # baseUri: https://mocksvc.mulesoft.com/mocks/b133e2e4-f0e3-49a0-b224-8f36358e04ca #
title: FlightApi-Rajesh
version: 1.0.1
/{flightId}:
description: Flight Id
get:
queryParameters:
flightId:
displayName: flightId
type: string
required: true
description: Flight name with its ID
example: F0001
description: Get the flight with `flightId = {flightId}`
responses:
200:
body:
application/json:
example: |
{
"F001":{
"flightName": "Ingido",
"Location": "Mumbai",
"flightId": "F001",
"Destination":"Delhi",
"timing":"19:55 HRS"
},
"F002":{
"flightName": "SpiceJet",
"Location": "Pune",
"flightId": "PNQ012",
"Destination":"Chennai",
"timing":"15:00 HRS"
}
}
404:
body:
application/json:
example: |
{"message": "Flight not found"}
解决方案
RAML 是 REST API 的设计规范。当您运行基于 RAML 的模拟服务时,它不具备生成动态响应的能力,而这正是您正在尝试做的。请参阅确认这一点的 Mule 论坛 - https://forums.mulesoft.com/questions/60487/can-the-example-in-the-raml-be-dynamic.html
如果您的要求是创建具有动态响应的模拟服务,还有其他方法可以实现此类模拟服务 - SOAPUI、Dynatrace 等。
- http://blog.maheeka.me/2016/11/parasoft-virtualizer-tips-for.html
- https://www.soapui.org/rest-testing-mocking/service-mocking-overview.html
如果您的要求是使用 RAML 并尝试动态响应,则必须基于 RAML 创建一个 Mule ESB 项目。然后,您可以根据 Mule 配置接收到的输入实现动态响应。
推荐阅读
- django - 如何通过 mixins 继承多个查询集过滤器
- c++ - Boost ASIO - 在接收的同时处理数据
- prometheus - 计算计数器度量范围向量中第一个元素和最后一个元素之间的差异
- css - 报告中的工具提示正在 Oracle APEX IR 中的其他区域之下
- python - Redshift 中的 Python UDF 函数始终返回 NULL 值
- visual-studio - 条件编译符号不起作用
- sql - 如何找到上一年的变化百分比
- javascript - 无法从 office 365 word online 中的 word 表中检索内容控制
- javascript - (Laravel) 预取数据库数据中的实时搜索
- architecture - 如何搭建集成平台