Umu*_*rin 2 rest social-networking restful-url social-network-friendship
我是公司的 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 | |
+-----------+------------------+------+-----+---------------------+----------------+
Run Code Online (Sandbox Code Playgroud)
现在,我正在尝试思考应该如何实现必要的 URI。但我不知道应该如何准确地实现它。我只能想到这个想法,却无法付诸实践:
假设我有 2 个用户,一个是usernameof john,另一个是usernameof jane。
jane想要添加john为好友,当需要添加好友时,她会发送一个POST请求:
POST /users/john/friendships
Run Code Online (Sandbox Code Playgroud)
john看到这一点,想要否认或证实它,为此,我想出了两个不同的想法;第一个是:
PUT /users/jane/friendships?action=(deny|confirm)
Run Code Online (Sandbox Code Playgroud)
或第二个是:
PUT /users/jane/friendships/<friendshipId>?action=(deny|confirm)
Run Code Online (Sandbox Code Playgroud)
按照惯例,第二个似乎更适合我,但后来我认为我可以这样做
PUT /friendships/<friendshipId>?action=(deny|confirm)
Run Code Online (Sandbox Code Playgroud)
所以,我被困在这里了。我想到的就是这些例子。我不认为这些是正确的。
John 可以将 Jane 添加为好友(包括带有相关信息的请求正文):
POST /users/john/friends
...或者,约翰可以更新一些有关他与简的友谊的信息(同样,使用请求正文)
PUT /users/john/friends/jane
...或者,约翰可以与简“解除好友关系”。
DELETE /users/john/friends/jane
| 归档时间: |
|
| 查看次数: |
2575 次 |
| 最近记录: |