2013-05-29 5 views
7

Хотелось бы услышать от вас опыт? Как лучше всего создать API для извлечения данных из базы данных. Если вы отправляете имя вида или название процедуры, то это не будет полностью соответствовать безопасности танков. Поэтому мне интересно, есть ли у кого-нибудь опыт или идеи?API для извлечения/отправки данных из/в базу данных

Должен ли я, например, иметь поле, которое сообщает, к чему имеет доступ пользователь, подключающий API? Доступ к таблице и строке.

+0

проверить архитектуру SAAS. – Sebas

+0

какой язык? –

+2

Вы можете потратить всю свою репутацию на награды, но никто не сможет вам ответить, если вы не разъясните, о чем вы просите. «Создание API для извлечения данных из db» звучит как изобретать колесо, или я не понимаю. Опишите, что вы пытаетесь сделать. – TMS

ответ

3

Я сделаю снимок.

Вы уже упомянули веб-API, поэтому я предполагаю, что вы используете то, что означает, что у вас есть REST API поверх базы данных.

Путеводитель:

  1. Придумайте модели данных вы хотите, чтобы выставить пользователям. Вероятно, это будет отличаться по-разному от вашей модели базы данных. Если вы являетесь магазином, у вас может быть 2-3 разных таблицы для хранения продуктов, но вы захотите выставить «продукт» с помощью одного вызова API.

  2. После того, как у вас появится модель данных пользователя, начните писать тесты. Вам нужны модульные тесты для ваших контроллеров Web API, и вам нужно найти способ издеваться над вызовами базы данных, которые вы делаете. Тесты хорошо стоит усилие!

  3. Для обеспечения безопасности у вас есть много вариантов. Вы можете выбрать такие вещи, как HMAC (https://en.wikipedia.org/wiki/Hash-based_message_authentication_code) или OAuth (Best way to create a TOKEN system to authenticate web service calls?) или даже JWT (Secure WebAPI with a JWT).

  4. После аутентификации пользователя вы можете назначить им привилегии. Они могут читать, писать и обновлять в зависимости от того, к чему у них есть доступ. У вас может быть таблица базы данных, чтобы контролировать это потенциально.

  5. Я бы рекомендовал подумать об управлении версиями раньше времени. Моя рекомендация состояла бы в том, чтобы всегда иметь две версии вашего API - текущий и предыдущий. Вы развертываете API и при его замене в первый раз, когда вы поддерживаете устаревший API и новый. Не пытайтесь поддерживать более двух версий.

  6. Сделайте все возможное, чтобы написать какой-то интерфейс, который абстрагирует базу данных перед отправкой данных через веб-API. Это поможет вам полностью заменить базу данных в будущем, если вам нужно. Это также помогает тестировать устройство.

3

для .NET API-интерфейсы, Microsoft has some useful guidelines и list of laws regarding API design. Что касается полей данных, которые предоставляют пользователю информацию о доступных данных, я думаю, что это хорошая идея. Для более привилегированных пользователей вы можете отправить информацию в форме encrypted для повышения безопасности.

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