Rest 如何将资源创建和其他方法放在同一组中?

Rest 如何将资源创建和其他方法放在同一组中?,rest,restful-architecture,apiblueprint,apiary.io,apiary,Rest,Restful Architecture,Apiblueprint,Apiary.io,Apiary,假设我使用POST/resource创建了一个资源,并在响应体上生成了一个id,然后我使用该id来检索带有GET/resource/{id}的资源 如何将这两个请求放在同一个API蓝图组中 显然,一个组只有一个端点,这使得下面的内容看起来像是您将使用POST/resource/{id}创建一个资源,这是不正确的,因为此时您甚至没有id ## Resource [/resource/{id}] ### Creating the resource [POST] + Response 201

假设我使用
POST/resource
创建了一个资源,并在响应体上生成了一个
id
,然后我使用该
id
来检索带有
GET/resource/{id}
的资源

如何将这两个请求放在同一个API蓝图组中

显然,一个组只有一个端点,这使得下面的内容看起来像是您将使用
POST/resource/{id}
创建一个资源,这是不正确的,因为此时您甚至没有id

## Resource [/resource/{id}]

### Creating the resource [POST]

+ Response 201
    + Body

            {
                "id": "uuid"    
            }

### Retrieving the resource [GET]

+ Parameters
    + name (string) ... The name of your collection.

+ Response 200
  + Body

          {
              "id": "uuid"  
          }

我查看了,但找不到创建和检索特定资源的示例。我这样做是错误的吗?

从技术上讲
/resource
/resource/123456
不是相同的资源标识符。有关更多详细信息,请参阅

就我个人而言,我更愿意将其视为“资源”和“资源集合”。其中创建操作通常意味着“创建并插入集合”。集合有一个URL(例如
/gighty/frogs/in/The/wood/
/resources
),集合中的a资源有另一个URL(例如
/123124
/resources/1234
)请注意,关键是URL的绝对值是不相关的,只要它们是唯一的——尽管如此,拥有健全的URL通常是一个好主意

回到蓝图:

# Collection of Resource [/resouces]
## Create [POST]

...

### List all Resources [GET]
...

# One Resource [/resource/{id}]

## Retrieve the Resource [GET]    
...

希望这能有所帮助。

您的蓝图上写着“创建资源集合”,这正是我试图避免的。但是,如果您只考虑一个资源,并且它是一个生命周期,那么您就有创建、更新、检索和删除。POST PUT GET DELETE,似乎这些应该属于同一组。最糟糕的是,我的API实际上有一个名为
collection
的资源,所以我必须调用该组
collection
。。。我讨厌命名东西。但是您确实创建了一个资源,将帖子发送到另一个资源(post/resources vs.GET/resources/12312)。基本上,REST是什么——通过基于可用启示的表示来操纵资源。这不是OOP:)但是,这是我的观点,您的里程可能会变。请参阅本讨论,了解与此相关的计划语法更新–啊哈!这就是它所需要的:)谢谢!