API设计 - 在一条路线上创建2种不同的资源

时间:2012-05-14 04:51:59

标签: ruby-on-rails-3 api rest routes

我正在设计一个与移动应用程序一起使用的API,我坚持一个特定的要求。有一种情况我需要创建两个不同的资源,我宁愿用一个HTTP请求来做,所以我不必乱用多个请求和回调等。

为了简化,我有一个名为Buckets的资源和一个名为Apples的资源。存储桶包含许多苹果,并且存储桶也可以由用户命名。用户为Bucket命名,然后在整个应用程序中,可以将不同的Apples实例分配给该特定存储桶。

我不清楚如何创建我的路线如果用户正在查看Apple并希望将其分配给具有全新名称的Bucket。在这种情况下,我的路线必须首先使用新名称创建Bucket,然后将Apple添加到该Bucket。

到目前为止我的一些路线是:

POST /buckets                    # create a new bucket
POST /buckets/:bucket_id/apples  # create a new apple within an existing bucket

这条混合路线会是什么样子?也许是这样的事情:

POST /buckets/new/apples         # post data would contain NAME of new bucket and ID of apple

打开任何建议,但重申一下,我真的想在一个HTTP请求中完成所有这些。不确定是否会破坏RESTful设计模式。