首页 > 解决方案 > 如何使用不同的输入查询参数发送不同的 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"}

标签: apimuleramlmule-esb

解决方案


RAML 是 REST API 的设计规范。当您运行基于 RAML 的模拟服务时,它不具备生成动态响应的能力,而这正是您正在尝试做的。请参阅确认这一点的 Mule 论坛 - https://forums.mulesoft.com/questions/60487/can-the-example-in-the-raml-be-dynamic.html

如果您的要求是创建具有动态响应的模拟服务,还有其他方法可以实现此类模拟服务 - SOAPUI、Dynatrace 等。

如果您的要求是使用 RAML 并尝试动态响应,则必须基于 RAML 创建一个 Mule ESB 项目。然后,您可以根据 Mule 配置接收到的输入实现动态响应。

http://workshop.tools.mulesoft.com/modules/module3_lab1#step-1-create-a-new-mule-project-and-import-raml-definition


推荐阅读