我已经尝试了RESTful API概念,并发现它是构建资源API的一种很好的思维方式。例如,将comment
添加到post
将是
POST /posts/{id}/comments
然而,在某些情况下,如果我错了,请纠正我,预期的API不能真正成为一个简单的CRUD模型
例如,将product
添加到系统需要添加picture
,添加多个tags
指定其category
?
如何以宁静的方式做到这一点?
1。)多次API调用后,我是否强制API用户关注?
POST /pictures -- add picture
GET /categories -- get selected category
POST /tags -- add tags
POST /products -- input picture, category, tags ids as JSON fields
2.。)我是否使用自动查找所有子资源的嵌套对象?
POST /products -- input nested JSON array with picture/category/tags object field
在这种情况下,所有子资源都将是现有资源,而不是应该发布的一些资源(picture
,tags
)。
此外,如果在内部添加picture
但在添加tags
失败后会发生什么?
3.。)我只是做一个休闲的API吗?这如何适合REST?这不会破坏RESTful的想法吗?
POST /add_products
是否有任何指南可以处理RESTful API的复杂API?
谢谢。
答案 0 :(得分:1)
在我看来,人们对REST最大的误解之一是内部模型(db中的表或mongo中的文档)和REST资源必须相同。 REST资源可以是真实模型,也可以是抽象实体,可能不存在于db中。
因此,在这种情况下,就REST而言,具有POST
即POST /products
请求的网址完全没问题。根据我的个人经验提出的建议 - 只要REST的基本原则得到保护,就像