当您使用类型并使用RAML 1.0编写API时,是否可以从请求正文中排除一个或多个属性
我会解释。我有一个类型:'Order',带有一组属性。我有一个资源/orders
和一个方法post
,它允许用户创建新订单。
请求主体是一个订单结构json,响应也是一个订单结构。
但我不希望用户在提交请求时指定订单ID。但是该响应将返回该id(以及更多“仅响应”字段)。我不想创建额外的类型,例如OrderRequest
,然后使用Order
类型继承它,也许有一个更优雅的解决方案?
所以我希望有一种方法可以从请求体中排除某些属性,并保留其他属性以便使用它们的描述和示例。
谢谢并抱歉我的英语:)
答案 0 :(得分:7)
使用两种类型。第二个将是第一个孩子。例如:
#%RAML 1.0
title: GitHub API
version: v3
baseUri: https://api.github.com
mediaType: application/json
types:
OrderCreating:
type: object
properties:
products:
description: List of product ids with amount.
required: true
type: object
properties:
[]:
type: number
coupon?: string
Order:
type: OrderCreating
properties:
id: integer
price: number
...
/orders:
post:
body:
application/json:
type: OrderCreating
/{orderId}:
get:
responses:
200:
body:
application/json:
type: Order
此外,您可以在Library中附上您的类型声明。
答案 1 :(得分:1)
由于您不想创建具有继承的额外类型,您仍然可以将该字段标记为可选字段并记录它在响应中的存在。