asp.net web api

19
ASP.NET Web API Фреймворк для работы с данными по HTTP Андрей Кулешов

Upload: getdevnet

Post on 22-May-2015

1.004 views

Category:

Technology


0 download

DESCRIPTION

Слайды со встречи http://getdev.net/Event/webapi Платформа ASP.NET Web API позволяет с легкостью создавать службы HTTP для широкого диапазона клиентов, включая браузеры и мобильные устройства. ASP.NET Web API идеально подходит для разработки приложений RESTful на платформе .NET Framework. Будут упомянуты понятия REST и отличие REST-пути от RPC (WCF)-пути, рассмотрен стандарт OData, сказаны слова OWIN и Katana

TRANSCRIPT

Page 1: ASP.NET Web API

ASP.NET Web APIФреймворк для работы с данными по HTTP

Андрей Кулешов

Page 2: ASP.NET Web API

ASP.NET Web API – история▪ Первый релиз – 2012 год

▪ Текущая версияWeb API 2.1 – 20 января 2014 года

▪ Перерождение WCF

Page 3: ASP.NET Web API

Эволюция доступа к данным▪ RPC (SOAP, WCF) -> REST

▪ От абстракции – возвращение к четко определенному протоколу HTTP

▪ RPC – Remote Procedure Call – удалённый вызов кода на серверной стороне посредством магии

▪ Подход RPC позволяет использовать небольшое количество сетевых ресурсов с большим количеством методов и сложным протоколом. При подходе REST количество методов и сложность протокола строго ограничены, из-за чего количество отдельных ресурсов может быть большим.

Page 4: ASP.NET Web API

Representational state transfer (REST) ▪ REST (сокр. англ. Representational State Transfer, «передача

состояния представления»[1] или «передача репрезентативного состояния») — стиль построения архитектуры распределенного приложения. Был описан и популяризован в 2000 году Роем Филдингом (Roy Fielding), одним из создателей протокола HTTP. Самой известной системой, построенной в значительной степени по архитектуре REST, является современная Всемирная паутина.

▪ Данные в REST должны передаваться в виде небольшого количества стандартных форматов (например HTML, XML, JSON). Сетевой протокол (как и HTTP) должен поддерживать кэширование, не должен зависеть от сетевого слоя, не должен сохранять информацию о состоянии между парами «запрос-ответ». Утверждается, что такой подход обеспечивает масштабируемость системы и позволяет ей эволюционировать с новыми требованиями.

Page 5: ASP.NET Web API

REST <-> HTTP▪ Методы HTTP, используемые в REST, определяют тип совершаемой

операции

▪ GET – получение существующих сущностей

▪ POST – модификация существующих сущностей

▪ PUT – создание сущностей

▪ PUT DELETE – как слышится, так и пишется

Page 6: ASP.NET Web API

REST▪ Вызываемый метод определяется адресом URI и методом Verb

▪ Отсутствие состояния у системы (stateless система – в противоположность statefull системе)

▪ Кэширование

Page 7: ASP.NET Web API

Демо

▪ Совсем простое Web API

▪ Совсем простое клиентское приложение

Page 8: ASP.NET Web API

Контроллеры и методы▪ Рекомендованный путь – один контроллер на одну сущность данныхBookControllerAuthorControllerReaderController

▪ Каждый контроллер содержит множество методов

▪ Имя метода (action) сопоставляется c методом (verb) запросаEventController: ApiContoller{ public Event GetMyCoolEvent() { return new Event(); }}Данный метод сопоставляется со всеми GET-запросами. Остаток имени (MyCoolEvent) игнорируетсяЕсли Get*-методов несколько – выбирается первый соответствующий по параметрам

▪ Параметры могу приходить из URL, в HTTP-заголовках или из тела запроса (для POST/PUT/DELETE запросов)

Page 9: ASP.NET Web API

Роутинг▪ При разработке устанавливаются правила соответствия

пришедшего запроса и наших классов *Controller и их методов

▪ В пришедшем запросе (по умолчанию) смотрят на:o путь (URL)

o HTTP-метод (GET, POST, PUT, UPDATE)

▪ Классический подход, пришедший из ASP.NET MVC – заполнение набора правил роутинга

▪ Новый подход – установка атрибутов на действия

Page 10: ASP.NET Web API

OData▪ Стандарт протокола запросов при обращении к данным

▪ Попытка Майкрософт и К стандартизовать язык запросов к REST-сервисам

▪ Задает стандартные операции над сущностями – фильтрация, сортировка, разбиение на страницы и получение связанных сущностей

Page 11: ASP.NET Web API

Odata и Web API 2.1▪ Поддерживаемые Web API v.2.1 операции:

$filter – фильтрация выборки

$orderby - сортировка

$top/$skip – первые N записей и пропуск первых N записей; разбиение на страницы

$inlinecount – добавляет в ответ информацию о количестве записей, удовлетворяющих условию

$select – выбор того, какие данные сущности будут возвращены

$expand – позволяет как результат запроса к сущностям одного типа получить также связанные сущности другого типа (например, при запросе к данным о книгах – получить в том же запросе ответ об авторах этих книг)

▪ По умолчанию выключены, включаются централизованно либо для нужных методов через атрибуты

Page 12: ASP.NET Web API

Демо

▪ Включение OData

▪ Фильтрация через параметры URL

Page 13: ASP.NET Web API

Безопасность▪ Авторизация пользователей

▪ Поддержка CORS (из коробки с версии 2.1 – добавлена как патч от члена сообщества)

Page 14: ASP.NET Web API

Справка по API▪ Web API из коробки поддерживает возможность автоматического

создания справочных страниц на основе сгенерированного Web API

▪ Туда собираются данные об известных сущностях, поддерживаемых операциях и URL-адресах

▪ Если необходима тонкая настройка – возможен непосредственный доступ к данным через ApiExplorer

Page 15: ASP.NET Web API

Создание справки

▪ Добавление справки в проект

Page 16: ASP.NET Web API

Размещение Web API▪ Классическое – как часть ASP.NET сайта на IIS

▪ Self-hosting – возможность встроить Web API куда угодно (в разного рода демонстрациях – в консольное приложение, в реальной жизни – в Windows-сервисы)

▪ OWIN – то же самое, что и предыдущий пункт, но по-новомуOpen Web Interface for .NETНовая реализация стэка работы с сетью по протоколу HTTP, не привязанная к IIS вообще и к System.Web.dll в частности

Page 17: ASP.NET Web API

Интересное чтение

▪ Официальный сайт. Документация, примеры и статьиhttp://asp.net/web-api

▪ REST на Википедии

▪ ASP.NET MVC 4 and the Web API: Building a REST Service from Start to Finish by Jamie Kurtz

▪ ODatahttp://www.odata.org

Page 18: ASP.NET Web API

Интересное видео▪ ASP.NET Web API – What’s New (версия 2.0)

Page 19: ASP.NET Web API

Вопросы?Внимательно слушаю!

Андрей Кулешов

[email protected]

akuleshov.tula

Специально для http://GetDev.NET