Подтвердить что ты не робот

Создание REST API для существующего веб-сайта MVC

У меня есть веб-сайт, разработанный с использованием ASP.NET MVC3.
Теперь я хочу открыть API REST для других пользователей, которые будут раскрывать те же функции, что и веб-сайт.

На веб-сайте, как только пользователь выполнил вход и учетные данные, проверенные с помощью БД, сеанс управляет состоянием входа в систему пользователя.
Как я могу сделать эквивалент с REST API, где многие из обнаруженных методов требуют, чтобы пользователь вошел в систему (или, по крайней мере, имел действительное имя пользователя и пароль)?

В дополнение к этому, лучший подход для веб-сайта также должен был бы использовать REST API (предполагая, что API охватывает все функциональные возможности, необходимые сайту)?

Насколько хорошо подходит ASP.NET MVC3 для этого - конечно, учитывая, что сайт уже существует с использованием этой структуры?

4b9b3361

Ответ 1

Я написал сообщение в блоге о том, как [построить архитектуру RESTful API в приложении ASP.NET MVC 3] лет назад, и в итоге мне пришлось оставить сайт.:( Это может быть хорошим началом, если вы захотите создать API REST в своем приложении MVC.

См. ответ от @tugberk при использовании WebAPI для хорошего решения.

Ответ 2

ASP.NET MVC очень хорошо подходит для этого. Хотя вы можете использовать другие подходы (например, WCF), я бы придерживался MVC, так как у вас уже есть рабочий сайт, который должен быть выставлен другим пользователям.

См. также мой другой ответ:

Что лучше для создания API для моего сайта: службы данных MVC или Ado.net?

Ответ 3

Примечание:

WCF Web API теперь является веб-API ASP.NET и сильно изменился. Бета-версия теперь доступна версия. Для получения дополнительной информации: Начало работы с ASP.NET Web API - учебные пособия, видео, образцы

Я бы пошел с WCF Web Api, чтобы сделать это. ASP.NET MVC также хорош и способен отображать ваши данные, но WCF Web Api более эффективен, если вы рассматриваете возможность предоставления своих данных своим пользователям. Он прост в использовании и интегрирует REST Web API в вашу систему.

Для аутентификации ключ API всегда является лучшим способом для этого типа сценария. Вот хороший пример того, как вы можете реализовать API Auth с веб-интерфейсом WCF:

http://weblogs.asp.net/cibrax/archive/2011/04/15/http-message-channels-in-wcf-web-apis-preview-4.aspx

Примечание:

Они только что выпустили предварительную версию 5 пару недель назад и Каналы сообщений были изменены на обработчики сообщений до тех пор, пока я знать. Но приведенная выше статья должна дать вам идею.

Для реализации безопасности может помочь и нижеследующее:

wcf Реализация маркера аутентификации - как это сделать

Ответ 4

ASP.NET MVC - отличный выбор для этого. Я создал несколько ASP MVC, которые действуют как службы RESTful, так и веб-сайты.

Чтобы обобщить парадигму дизайна, которую я использую, каждый контроллер имеет действие, которое испускает JSON-представление запрошенных данных. Указанные данные загружаются в модель просмотра на сервере, а встроенный сериализатор JSON заботится о стороне сервера, в то время как представление jQuery хорошо загружает данные для моих фактических веб-страниц, которые они потребляют.

На самом сайте есть индексные действия для каждого контроллера, которые испускают необходимую разметку, но не данные. Методы jQuery document.ready на страницах загружаются в данные из того, что является по существу моим отдыхом api, но строят прямо на сайт.

Checker Nerd Dinner для отличного примера кода. http://nerddinner.com/

Что касается безопасности, я думаю, что мой опыт будет отличаться от вашего. ASP MVC очень хорошо интегрируется с активным каталогом, если ваши пользователи находятся в одном домене и имеют учетные данные AD. Это единственный метод, который я использовал, и с легкостью, успехом и удовлетворением.

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

Ответ 5

Я бы пошел с реализацией веб-службы WCF следующим образом.

  • Оберните всю свою бизнес-логику в отдельный проект dll, названный как yourproject.businessservices, например
  • Создайте веб-сервис аутентификации, который будет генерировать не повторяющийся токен для входа пользователя.
  • В этом входе хранятся основные сведения пользователя вместе с токеном в кэше, например MemCache, который должен иметь скользящее окончание
  • Если пользователь не обратился к кешу, пусть говорит час, кеш истекает, и пользователь выходит из системы.
  • Если пользователь использует его, кеш продолжает расширяться.

    На стороне службы wcf

  • Создайте API для возврата токена при аутентификации

  • Все методы wcf будут иметь этот идентификатор сеанса, который должен быть проверен

    Преимущество состоит в том, что методы wcf могут подвергаться возврату xml или json-формата и могут также использоваться как обычные веб-службы.

    [WebInvoke (Method = "GET", ResponseFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "/MyModule/XML/GetData/{customerSessionId}" )]    [WebInvoke (метод = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "/MyModule/JSON/GetData/{customerSessionId}" )]