Mule 相互验证RAML数据类型中的字段
我需要为请求创建一个RAML数据类型,用户可以在其中输入名字和姓氏或业务名称。如果用户输入的是名字,那么他也应该给出姓氏,而不是企业名称。这是我创建的数据类型,其中我将所有这三个字段都设置为非必需字段。这也是我所期望的JSON请求的结构Mule 相互验证RAML数据类型中的字段,mule,raml,Mule,Raml,我需要为请求创建一个RAML数据类型,用户可以在其中输入名字和姓氏或业务名称。如果用户输入的是名字,那么他也应该给出姓氏,而不是企业名称。这是我创建的数据类型,其中我将所有这三个字段都设置为非必需字段。这也是我所期望的JSON请求的结构 #%RAML 1.0 DataType properties: account_number: type: string required: true first_name: type: string required:
#%RAML 1.0 DataType
properties:
account_number:
type: string
required: true
first_name:
type: string
required: false
last_name:
type: string
required: false
business_name:
type: string
required: false
这对我的用例没有任何意义。因此,我尝试将名字和姓氏定义为不同的类型,将它们设置为必需的,并通过将链接字段设置为非必需字段将其链接到父级
userType.raml
#%RAML 1.0 DataType
properties:
account_number:
type: string
required: true
name:
type: !include nameType.raml
required: false
business_name:
type: string
required: false
nameType.raml
#%RAML 1.0 DataType
properties:
first_name:
type: string
required: true
last_name:
type: string
required: true
当我嘲笑请求时,这似乎不起作用。我的问题是:
#%RAML 1.0
title: union types
types:
person_name:
type: object
properties:
first_name:
last_name:
business_name:
type: string
entity_name: person_name | business_name
/entity:
get:
queryString:
type: entity_name
现在我确实尝试了MuleSoft的模拟服务,我想你是指“模拟”。模拟服务似乎无法处理联合类型。这不是RAML的问题,而是Mocking服务的问题
- nameType.raml
- userType.raml
- 现在创建一个libraries文件夹,并在其中创建一个library.raml文件,该文件将包含以下内容
- 图书馆
{
"accountNumber":"",
"name":{"business_name": ""}
}
第二项请求:
{
"accountNumber":"",
"name":{
"first_name": "",
"last_name": ""
}
}
文件夹结构截图
需要帮忙吗?
#%RAML 1.0 Library
types:
name: !include ../types/request/nameType.raml
user: !include ../types/request/userType.raml
#%RAML 1.0
version: v1
title: Test API
uses:
lb-api: libraries/library.raml
/entity:
post:
body:
application/json:
type: object
properties:
accountNumber:
type: string
name: lb-api.name | lb-api.user
examples: {}
responses:
200:
body:
application/json:
example:
400:
body:
application/json:
example:
{"message": "Search query too long"}
{
"accountNumber":"",
"name":{"business_name": ""}
}
{
"accountNumber":"",
"name":{
"first_name": "",
"last_name": ""
}
}