2016-07-21 2 views
3

Я вижу, что rethinkdb теперь имеет сервер приложений, называемый горизонтом, и это примеры включают множество клиентских приложений без кода сервера.является rethinkdb горизонт хорошо подходит для отдыха api веб-службы?

Если я хотел создать службу REST api с rethinkdb - горизонт все еще добавляет значение или я должен просто создать стандартный node.js rest api, используя библиотеки rethinkdb напрямую?

Я вижу, что горизонт имеет определенную аутентификацию, авторизацию и разрешения, которые могут быть полезны, но я не уверен, что превращение его в api вместо стандартного веб-приложения делает изгиб горизонта во что-то, что не должно быть ,

ответ

1

Если бы я хотел создать службу REST API с rethinkdb - делает горизонт еще добавить стоимость

Нет, если все, что вы хотите это операция CRUD REST API отображения конечных точек на данные RethinkDB, то Горизонт вам не поможет.

Horizon отлично подходит, если вы хотите использовать API websocket с функциями «реального времени» и планируете использовать клиент Horizon в браузере.

Horizon усомнился в том, как он обрабатывает пользователей и разрешения (он применяет их на стороне сервера с использованием разных пользователей/разрешений для каждого приложения, а не для таблицы пользователей RethinkDB).

# RethinkDB 
r.db('rethinkdb').table('users') 
r.db('rethinkdb').table('permissions') 

# Horizon 
r.db('myapp_internal').table('users') 
r.db('myapp_internal').table('users_auth') 

В настоящее время я играю со стеком, который использует feathers для разработки общих услуг, которые могут быть подвержены через REST или WebSocket транспорта. Это сложнее, но я могу использовать как перья, так и Horizon, но будет некоторая работа по правильному отображению разрешений на обеих конечных точках. (Плюс принудительное выполнение схемы ...) Перья поддерживают различные поставщики аутентификации, которые возвращают JWT, которые вы могли бы передать в горизонт (если вы установили ту же самую секретную клавишу) ...

Если вам не нужны функции реального времени в вашей базы данных, вы можете проверить PostgREST, поскольку он имеет в своем распоряжении JWT-аутентификацию и использует фактические роли базы данных для авторизации на уровне строк. «Один источник истины». Вы можете использовать это вместе с PostGraphQL, если хотите как REST, так и GraphQL! Кроме того, вы можете хранить данные JSON в столбцах в эти дни, чтобы все было хорошо!

Очень много вариантов!

Удачи вам!

+0

После более глубокой обработки может быть разумным рассматривать «горизонт» как источник истины и использовать клиент горизонта в узле узлового сервера для конечных точек REST. например http://stackoverflow.com/questions/37402526/rethinkdb-horizon-integration-with-express-access-horizon-data-server-side –

+0

Я только что разработал пример использования Horizon для создания сервиса с использованием RESTful CRUD Интерфейсы API и в реальном времени переносятся: https://github.com/ubergarm/stack-in-a-box –

0

Вы можете встроить Horizon в приложение-узел и использовать только его набор функций: http://horizon.io/docs/embed/. Вы можете легко копировать аутентификацию. Было бы сложнее связать разрешения, если вы реализуете свой собственный REST API, потому что система разрешений только контролирует доступ к коллекциям.

Лично я подозреваю, что это будет больше проблем, чем это стоит, если вы встраиваете его только для аутентификации.

Смежные вопросы