Я разработчик 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 разные идеи; 1-й это:
PUT /users/jane/friendships?action=(deny|confirm)
или 2-й:
PUT /users/jane/friendships/<friendshipId>?action=(deny|confirm)
Условно 2-й мне кажется более подходящим, но тогда я думаю, что я могу просто сделать
PUT /friendships/<friendshipId>?action=(deny|confirm)
Итак, я застрял здесь. Все, что я думаю об этом, это эти примеры. Я не думаю, что это правильные.