Я разработчик API в своей компании. Мы развиваем социальную сеть. Мы используем систему дружбы. Мы используем API-ориентированную систему. Апи, которую я напишу, будет использоваться каждой платформой, которую мы разрабатываем.RESTful URL-дизайн для системы дружбы
я классически есть ресурс пользователя, и я использую таблицу приятельств отслеживать дружбу:
+-----------+------------------+------+-----+---------------------+----------------+
| 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)
Так , Я застрял здесь. Все, что я думаю об этом, - это эти примеры. Я не думаю, что они правильные.
Спасибо за ответ :) Но это так, как вы могли бы сделать, или это полностью RESTful подход? –
Ну, никакой «REST API» по-настоящему «полностью RESTful», потому что все они требуют некоторого знания API заблаговременно, где REST описывает приложение, которое можно полностью использовать и использовать, начиная с корневого URI. Но варианты, на которые я ответил, уважали глаголы HTTP и их базовые концепции, к которым, как правило, стремятся эти API. – tuespetre
Да, после некоторого размышления, он пришел ко мне тоже, используя '/ friends' вместо'/friendships'. Конечно, мне нужно сделать больше исследований, прежде чем я скажу _i знаю REST_. В любом случае, спасибо вам за ваш вклад. –