1)如何处理人际关系?
假设我有一个由作者撰写的文章资源。
基本上我会有类似的东西:
{
"article": {
"id": 1,
"title": "Foo bar",
"body": "Lorem ipsum dolor sid amet",
"published_on": "2011-05-06 21:54:23",
"author": {
"id": 25,
"username": "johndoe"
}
}
}
我将访问我的资源api/articles/1
我的问题是,表示这些数据的最佳方式是什么?
我应该做类似的事情:
{
"article": {
"id": 1,
"title": "Foo bar",
"body": "Lorem ipsum dolor sid amet",
"published_on": "2011-05-06 21:54:23",
}
}
并通过调用访问作者api/articles/1/author
仅包含作者 ID(子对象标识符)
{
"article": {
"id": 1,
"title": "Foo bar",
"body": "Lorem ipsum dolor sid amet",
"published_on": "2011-05-06 21:54:23",
"author": {
"id": 25,
}
}
}
或者包括上面看到的完整关系?
2) PUT 或 POST 创建新对象?
看看 SO 和其他地方,我注意到两者都用于创建和/或更新对象。
据我了解,两者都是有效的行动,但这取决于上下文。如果我创建与以前创建的对象相关的子对象,我必须使用POST
.
例如:我为一篇文章创建投票,因为该文章已经存在,我将POST
重新投票,但是,如果我创建一个新文章,我PUT
就投票。
我对吗?
3)我们应该如何格式化日期?
我已经看到 SO 使用 Unix Timestamp,其中 ISO8601 主要用于其他地方。
对此有什么“标准”或建议吗?