一个资源类型如何继承多个类型?
How can a resourceType inherit from multiple types?
目标:为 CRUD 端点创建资源类型,不再赘述。
(在 Anypoint Studio 和 Mulesoft 设计中心使用 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 }
有没有更好的方法?
我想到了一个丑陋的解决方法("base" resourceTypes 每个都将它们的类型设置为一个变量,因此它们可以串在一起),但它似乎会导致 Mulesoft 设计中心出现不一致的错误和崩溃.
我最终确实找到了一个明确的答案:使用可选方法(动词)。
创建一个包含所有 3 个动词的资源类型,而不是原来的 3 个资源类型。根据需要标记每个动词:false 或在动词名称后附加问号。
resourceTypes:
myResourceType:
get?:
responses:
200:
body:
application/json
post?:
responses:
201:
body: null
delete?:
responses:
200:
body: null
像往常一样在端点使用资源类型,并在端点下为要使用的每个动词添加一行。
此示例创建一个名为 "myResource" 的端点,它接受 GET 和 POST 请求,但不接受 DELETE 请求。
/myResource:
type:
myResourceType
get:
post:
GET 和 POST 继承了我们在 resourceType 中定义的所有内容。我们可以自由地覆盖或添加端点处的每个动词。
您还可以创建额外的资源类型并将其作为根类型,但我在尝试使用具有继承资源类型的变量时发现问题,并且可选方法似乎足够灵活以满足我的目标。
目标:为 CRUD 端点创建资源类型,不再赘述。
(在 Anypoint Studio 和 Mulesoft 设计中心使用 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 }
有没有更好的方法?
我想到了一个丑陋的解决方法("base" resourceTypes 每个都将它们的类型设置为一个变量,因此它们可以串在一起),但它似乎会导致 Mulesoft 设计中心出现不一致的错误和崩溃.
我最终确实找到了一个明确的答案:使用可选方法(动词)。
创建一个包含所有 3 个动词的资源类型,而不是原来的 3 个资源类型。根据需要标记每个动词:false 或在动词名称后附加问号。
resourceTypes:
myResourceType:
get?:
responses:
200:
body:
application/json
post?:
responses:
201:
body: null
delete?:
responses:
200:
body: null
像往常一样在端点使用资源类型,并在端点下为要使用的每个动词添加一行。
此示例创建一个名为 "myResource" 的端点,它接受 GET 和 POST 请求,但不接受 DELETE 请求。
/myResource:
type:
myResourceType
get:
post:
GET 和 POST 继承了我们在 resourceType 中定义的所有内容。我们可以自由地覆盖或添加端点处的每个动词。
您还可以创建额外的资源类型并将其作为根类型,但我在尝试使用具有继承资源类型的变量时发现问题,并且可选方法似乎足够灵活以满足我的目标。