这是通过我的API向作者添加图书的方式:
PUT /authors/1/books/1/
我现在想将这本书改成另一位作者。
我怎样才能做到这一点?我在考虑以下选项。
1-使/ author和/ books都是顶级资源。例如,使用书籍的属性来控制书籍的作者authorId: 2
。例如,在主体中PUT /book/1
设置authorId: 2
其他属性。
2-执行PUT /authors/2/books/1/
,将现有作者的书更改为2。使用这种方法,我应该检查该书是否已存在。如果存在,我会更新作者和其他属性,如果不存在,我会创建一本新书。
就最佳实践而言,哪个是最佳选择?第二种选择是胡扯吗?
两者都是唯一可识别的,因此两者都应本身就是资源,即
GET /authors/1
GET /books/1
因此,您建议IMO的第二种选择似乎是最明智的,即
PUT /books/1
{ authorId: 2 }
你是说第一种选择,对不对?:)我也喜欢这种方式。这是通常完成的方式还是有更好的方式?
@Mars先生,是的,您提出的第一种情况。在我看来,取决于您对“更好”的定义是什么,这种方法是完成设置后所需的“最佳”方法,对于典型的PUT将是一种非常流行的解决方案。