2

我是我公司的 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 个用户,一个使用usernameof john,另一个使用usernameof 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)

所以,我被困在这里。我想到的就是这些例子。我不认为这些是正确的。

4

1 回答 1

4

John 可以将 Jane 添加为朋友(包括带有相关信息的请求正文):

POST /users/john/friends

...或者,约翰可以更新一些关于他与简的友谊的信息(再次,与请求正文)

PUT /users/john/friends/jane

...或者,约翰可以“取消”简的朋友。

DELETE /users/john/friends/jane

于 2013-07-04T19:28:55.870 回答