1

在我的 REST 应用程序模型中,我的许多实体都包含一个“可审计”接口。这迫使我将这些子路径添加到这些实体端点:

/myEntityResource:

  #... boring code ...

  /createdBy:
    get:
      responses:
        200:
          body:
            application/hal+json:
              example: !include samples/userAccount.json
  /lastModifiedBy:
    get:
      responses:
        200:
          body:
            application/hal+json:
              example: !include samples/userAccount.json

理想的解决方案应该是向端点添加“可审计”特征,但根据 RAML 定义,特征仅适用于动词级别。

对我来说,另一个理想的选择应该是定义一个包含两个路径的资源类型“auditableItem”,但 RAML 定义不允许向资源类型添加路径。

目前我最好的方法是将两个路径都添加到每个端点,并将正文包含在一个单独的文件中:

/createdBy: !include auditableBody.raml
/lastModifiedBy: !include auditableBody.raml

有没有更好的办法?

4

1 回答 1

1

简短的回答是“是”。

根据http://apiworkbench.com/docs/#creating-resource-type,您可以将其重构为:

#%RAML 1.0 
title: Auditable Example
version: 1

resourceTypes:
  Auditable-createdBy:
    get:
      responses:
        200:
          body:
            application/hal+json:
              # example: !include samples/userAccount.json
  Auditable-lastModifiedBy:
    get:
      responses:
        200:
          body:
            application/hal+json:
              # example: !include samples/userAccount.json

/myEntityResource:
  /createdBy: 
    type: Auditable-createdBy
  /lastModifiedBy: 
    type: Auditable-lastModifiedBy

当然,您可以将其resourceTypes移至独立文件。

于 2016-01-05T10:04:24.313 回答