我是公司的API开发人员。我们正在开发一个社交网络。我们正在使用友谊系统。我们正在使用面向API的系统。我将要编写的api将被我们正在开发的每个平台使用。
我经常使用User资源,我正在使用友谊表来跟踪友谊:
+-----------+------------------+------+-----+---------------------+----------------+
| 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
看到了这一点,想要否认或确认,为此,我想出了两个不同的想法;第一个是:
PUT /users/jane/friendships?action=(deny|confirm)
或第二个是:
PUT /users/jane/friendships/<friendshipId>?action=(deny|confirm)
传统上,第二个似乎更适合我,但我认为我可以做到
PUT /friendships/<friendshipId>?action=(deny|confirm)
所以,我被困在这里。我想到的就是这些例子。我不认为这些是正确的。
答案 0 :(得分:3)
John可以将Jane添加为朋友(包括带有相关信息的请求正文):
POST /users/john/friends
......或者,John可以更新一些关于他与Jane的友谊的信息(再次,请求机构)
PUT /users/john/friends/jane
......或者,约翰可以“与Jane”取消联系。
DELETE /users/john/friends/jane