【发布时间】:2013-07-04 17:34:51
【问题描述】:
我是我公司的一名 API 开发人员。我们正在开发一个社交网络。我们正在使用友谊系统。我们正在使用面向 API 的系统。我将编写的 api 将被我们正在开发的每个平台使用。
我通常有一个用户资源,并且我正在使用友谊表来跟踪友谊:
+-----------+------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------------+------+-----+---------------------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| sourceId | int(11) | NO | MUL | NULL | |
| targetId | int(11) | NO | | NULL | |
| status | tinyint(1) | NO | | 0 | |
| seen | tinyint(1) | NO | | 0 | |
| createdAt | timestamp | NO | | 0000-00-00 00:00:00 | |
| updatedAt | timestamp | NO | | 0000-00-00 00:00:00 | |
| deletedAt | timestamp | YES | | NULL | |
+-----------+------------------+------+-----+---------------------+----------------+
现在,我正在考虑如何实现必要的 URI。但我不知道我应该如何准确地实现它。而我只能想出这个想法,并不能把它付诸实施:
假设我有 2 个用户,一个是 username 的 john,另一个是 username 的 jane。
jane想加john为好友,什么时候加,她发了POST请求:
POST /users/john/friendships
john看到这个,想否认或确认,为此,我想出了2个不同的想法;第一个是:
PUT /users/jane/friendships?action=(deny|confirm)
或第二个是:
PUT /users/jane/friendships/<friendshipId>?action=(deny|confirm)
按照惯例,第二个似乎更适合我,但后来我认为我可以做到
PUT /friendships/<friendshipId>?action=(deny|confirm)
所以,我被困在这里了。我想到的就是这些例子。我不认为这些是正确的。
【问题讨论】:
标签: rest social-networking restful-url social-network-friendship