Я подумываю о создании REST API как с websockets, так и с http, где я использую websockets, чтобы сообщить клиенту, что новые данные доступны или напрямую предоставить новые данные клиенту.
Вот несколько разных идей, как это могло бы работать:
ws = websocket
Идея A:
- Дэвид получает всех пользователей с помощью
GET /users
- Jacob добавляет пользователя с
POST /users
- Сообщение ws отправляется всем клиентам с информацией о том, что существует новый пользователь.
- Дэвид получает сообщение от ws и вызывает
GET /users
Идея B:
- Дэвид получает всех пользователей с помощью
GET /users
- Дэвид регистрируется, чтобы получить обновления ws, когда изменение сделано для
/users
- Jacob добавляет пользователя с
POST /users
- Новый пользователь отправляется в David by ws
Идея C:
- Дэвид получает всех пользователей с помощью
GET /users
- Дэвид регистрируется, чтобы получить обновления ws, когда изменение сделано для
/users
- Jacob добавляет пользователя с
POST /users
и получает id 4 - Дэвид получает id 4 нового пользователя по ws
- Дэвид получит нового пользователя с
GET /users/4
Идея D:
- Дэвид получает всех пользователей с помощью
GET /users
- Дэвид регистрируется для получения обновлений ws, когда изменения выполняются с
/users
. - Jacob добавляет пользователя с
POST /users
- Дэвид получает сообщение ws о том, что изменения выполняются с помощью
/users
- Дэвид получает только дельту, вызывая
GET /users?lastcall='time of step one'
Какая альтернатива является лучшей и какие плюсы и минусы?
Это еще лучше "Идея Е"?
Нужно ли нам использовать REST или достаточно для всех данных?
Изменить
Чтобы решить проблемы с получением данных из синхронизации, мы могли бы предоставить заголовок
" If-Unmodified-Since "
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-Unmodified-Since
или" E-Tag "
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag
или оба с запросами PUT.