目标:为 CRUD 端点创建 resourceTypes 而无需重复自己。
(在 Anypoint Studio 和 Mulesoft Design Center 中使用 RAML 1.0)
让我们为单个操作端点启动几个资源类型:
resourceTypes:
getItem:
get:
responses:
200:
body:
application/json
postItem:
post:
responses:
201:
body: null
deleteItem:
delete:
responses:
200:
body: null
到目前为止,一切都很好。
现在我想为允许 GET 和 DELETE 请求的端点创建一个 resourceType。这是有效的:
getDeleteItem:
type: getItem
delete:
responses:
200:
body: null
...但我不得不重复 deleteItem 中的代码,这是我不喜欢的。
这些方法不起作用:
# the syntax for a union of types, does not work for resourceTypes
getDeleteItem:
type: getItem | deleteItem
# no error here, but everything after the first type reference is ignored
getDeleteItem:
type: { getItem, deleteItem }
有没有更好的办法?
我想出了一个丑陋的解决方法(“基本”资源类型,每个类型都将其类型设置为一个变量,因此它们可以串在一起),但它似乎会导致 Mulesoft 设计中心出现不一致的错误和崩溃。