Создание web service в visual studio
Ключевые составляющие RESTful
Веб-сервисы прошли долгий путь с момента их появления. В 2002 году W3C выпустил определения WSDL и SOAP веб-сервисов. Это сформировало стандарт по созданию веб-сервисов.
В 2004 году W3C выпустил определение ещё одного стандарта под названием RESTful. В последние годы этот стандарт стал довольно популярным. На данный момент он используется многими известными сайтами по всему миру, в число которых входят Facebook и Twitter.
ABBYY , Москва, можно удалённо , До 90 000 ₽
Ключевые составляющие реализации RESTful:
Методы RESTful
- POST — с его помощью можно создать новую запись сотрудника;
- GET — с его помощью можно запросить список сотрудников;
- PUT — с его помощью можно обновить данные сотрудников;
- DELETE — с его помощью можно удалять записи сотрудников.
Посмотрим на это с точки зрения одной записи. Допустим у нас есть запись сотрудника под номером 1. Вот какое значение могли бы иметь следующие действия:
- POST — этот метод нельзя применить, так как сотрудник с номером 1 уже существует;
- GET — этот метод можно использовать для получения данных о сотруднике под номером 1;
- PUT — этот метод можно использовать для обновления данных сотрудника под номером 1;
- DELETE — этот метод можно использовать для удаления записи сотрудника под номером 1.
Почему RESTful
В основном популярность RESTful обусловлена следующими причинами:
1. Разнородные языки и среды — это одна из основных причин:
- У веб-приложений, написанных на разных языках, есть возможность взаимодействовать друг с другом;
- Благодаря RESTful эти приложения могут находиться в разных средах, будь то Windows или Linux.
Представим, что для работы с такими сайтами как Facebook, Twitter, Google и т. д. клиентскому приложению нужно знать, на каких языках и на какой платформе они написаны. Основываясь на этих знаниях, мы могли бы написать код для взаимодействия с ними, однако это превратилось бы в сущий ад.
Facebook, Twitter и Google дают доступ к их функциональности посредством RESTful веб-сервисов. Это даёт возможность любому клиентскому приложению взаимодействовать с этими сервисами с помощью REST.
2. Технологический бум – сегодня всё должно работать на разнообразных устройствах, будь то смартфон, ноутбук или кофеварка. Представляете, каких бы усилий стоило наладить взаимодействие этих устройств с помощью обычных веб-приложений? RESTful API делают эту задачу гораздо проще, поскольку, как было упомянуто выше, вам не нужно знать, что у устройства «под капотом».
3. Появление облачных сервисов — всё переезжает в облако. Приложения медленно перемещаются в облачные системы вроде Azure или Amazon, которые предоставляют большое количество API на основе RESTful архитектуры. Следовательно, приложения должны разрабатываться таким образом, чтобы они были совместимы с облаком. Так как все облачные архитектуры работают на основе REST, логично разрабатывать веб-сервисы тоже на REST-архитектуре, чтобы извлечь максимум пользы из облачных сервисов.
RESTful архитектура
Приложение или архитектура считается RESTful, если ей присущи следующие характеристики:
Принципы и ограничения RESTful
Архитектура REST основывается на нескольких характеристиках, которые описаны ниже. Любой RESTful веб-сервис должен им соответствовать, чтобы называться таковым. Эти характеристики также известны как принципы проектирования, которым нужно следовать при работе с RESTful-сервисами.
RESTful клиент-сервер
Это самое важное требование REST-архитектуры. Оно означает, что на сервере располагается RESTful веб-сервис, который предоставляет необходимую функциональность клиенту. При отправке клиентом запроса к веб-сервису сервер должен либо отклонить его, либо принять и предоставить соответствующий ответ.
Отсутствие состояния
Многослойная система
Суть этой концепции заключается в том, что любой дополнительный слой вроде промежуточного (слой, в котором создаётся бизнес-логика; это может быть дополнительный сервис, с которым клиент взаимодействует до сервера) можно поместить между клиентом и сервером, на котором располагается RESTful веб-сервис. Однако этот слой должен быть внедрён прозрачно, чтобы он не нарушил взаимодействия клиента и сервера.
Единообразие интерфейса
- POST — для создания ресурса;
- GET — для его получения;
- PUT — для его обновления;
- DELETE — для его удаления.
Веб-сервисы можно создавать на множестве языков. Многие IDE можно использовать для создания REST-сервисов.
Наш сервис будет работать со следующим набором данных «туториалов»:
TutorialId | TutorialName |
---|---|
0 | Arrays |
1 | Queues |
2 | Stacks |
Мы реализуем следующие RESTful методы:
- GET Tutorial — при его вызове клиент получает все доступные TutorialName;
- GET Tutorial/TutorialId — при его вызове клиент получает TutorialName, соответствующее переданному TutorialId;
- POST Tutorial/TutorialName — при его вызове клиент отправляет запрос на добавление туториала с переданным TutorialName;
- DELETE Tutorial/TutorialId — при его вызове клиент отправляет запрос на удаление туториала с TutorialName, соответствующему переданному TutorialId.
Теперь создадим шаг за шагом наш веб-сервис.
Шаг первый
После выбора этой опции должно появиться новое диалоговое окно, о котором мы поговорим в следующем шаге.
Шаг второй
Если далее у вас появилось следующее окно, выбирайте вариант «Пустой»:
После этого должно открыться окно, где в обозревателе решений можно увидеть наш проект:
Шаг третий
В открывшемся окне найдите опцию «Служба WCF (с поддержкой технологии AJAX)» и дайте ей имя TutorialSevice.svc:
Шаг четвёртый
Теперь нам нужно внести изменения в конфигурационный файл Web.config. Он содержит настройки, необходимые для правильной работы приложения. Наше изменение позволит приложению отправлять и принимать данные как RESTful веб-сервис.
Откройте конфигурационный файл:
Шаг пятый
Пора приниматься за код. Откройте файл TutorialService.svc. Сначала добавим код для отображения наших данных. Создадим список со строками «Arrays», «Queues» и «Stacks». Они будут отражать имена доступных туториалов:
Шаг шестой
Теперь напишем код для нашего метода GET в том же файле. Этот метод будет запускаться при каждом вызове сервиса из браузера. Он будет использоваться для получения доступных туториалов:
В самом методе GetAllTutorials() находится код, который собирает все названия туториалов и возвращает их в одной строке.
Шаг седьмой
Код, показанный ниже, нужен для того, чтобы вернуть соответствующий TutorialName при получении GET-запроса с TutorialId :
Метод GetTutorialByID() реализует описанную логику. Обратите внимание на то, что мы приводим TutorialId к типу Integer . Это связано с тем, что всё передаваемое в адресную строку браузера является строкой. А поскольку индексом списка не может быть строка, мы добавляем код, необходимый для преобразования в число.
Шаг восьмой
Настала очередь кода для метода POST, который будет вызываться каждый раз, когда мы захотим добавить строку в наш список туториалов с помощью POST-запроса:
На первой строке находится атрибут WebInvoke , прикреплённый к нашему методу, что позволяет вызывать его с помощью POST-запроса. Для атрибутов RequestFormat и ResponseFormat мы указываем JSON, так как именно с этим форматом работает RESTful веб-сервис.
Шаг девятый
Осталось добавить метод для работы с DELETE-запросами. Он будет вызываться каждый раз, когда мы будем пытаться удалить существующее значение из списка с помощью DELETE-запроса:
Первая-вторая строки ничем особо не отличаются от предыдущих методов, они сигнализируют о том, что нижеуказанный метод будет вызываться при каждом DELETE-запросе.
В самом методе DeleteTutorial() мы приводим переданный TutorialId к типу Integer и удаляем из списка соответствующий элемент.
В итоге код должен выглядеть так (не учитывая элементов, которые были там изначально):
Запускаем наш веб-сервис
Мы создали наш веб-сервис, пора его запустить.
Сначала кликните правой кнопкой по файлу проекта Webservice.REST и выберите опцию «Назначить автозагружаемым проектом», чтобы Visual Studio запустила этот проект при запуске всего решения:
Теперь осталось запустить проект. Рядом с кнопкой запуска будет указано имя браузера, в котором будет запускаться проект. Автоматически будет предложен браузер по умолчанию, однако вам ничто не мешает выбрать другой:
Прим. перев. В вашем случае сервис может запуститься на localhost с другим портом. Далее в статье мы будем использовать значение 51056, однако не забывайте заменять его на своё, когда будете пытаться запускать примеры.
В этом примере браузер делает GET-запрос и тем самым вызывает написанный нами метод GetAllTutorials() , который возвращает список со всеми туториалами.
Тестируем веб-сервис
Выше мы увидели, как браузер делает GET-запрос для вызова GetAllTutorials() . Давайте проверим другие сценарии.
1. GET Tutorial/TutorialId — при вызове этого RESTful API клиент должен получить TutorialName , соответствующий переданному TutorialId .
В этот раз был вызван метод GetTutorialByID() , который вернул туториал с индексом 1 — «Queues».
2. POST Tutorial/TutorialName — при вызове этого API клиент отправляет запрос на добавление переданного TutorialName , который сервер должен добавить в список. В этот раз нам понадобится инструмент Fiddler, который можно бесплатно скачать с официального сайта.
Запустите Fiddler и выполните следующие действия:
Нажмите на кнопку «Execute». После этого нашему сервису будет отправлен запрос на добавление «Trees».
3. DELETE Tutorial/TutorialId — при вызове этого API клиент отправит запрос на удаление из списка TutorialName , которое соответствует переданному TutorialId .
Запустите Fiddler и выполните следующие действия:
Если мы опять запросим список всех туториалов, мы увидим, что их стало меньше на один:
В этой статье вы можете написать веб-службу под названием MathService, которая предоставляет методы добавления, вычитания, деления и умножения двух чисел.
Требования
В следующем списке описываются рекомендуемое оборудование, программное обеспечение, навыки и знания, необходимые вам:
Написать веб-службу .asmx
Измените имя веб-службы по умолчанию, созданной с Service1.asmx на MathService.asmx.
Выберите Кнопку Нажмите, чтобы перейти на представление кода в среде конструктора.
Определите методы, которые инкапсулируют функциональность службы. Каждый метод, который будет выставлен из службы, должен быть помечен WebMethod атрибутом перед ней. Без этого атрибута метод не будет выставлен из службы.
Не каждый метод должен иметь WebMethod атрибут. Полезно скрыть некоторые сведения о реализации, называемые методами общедоступных веб-служб или в случае, когда класс также WebService используется в локальных приложениях. Локальное приложение может использовать любой общедоступный класс, но только методы будут удаленно доступны WebMethod в качестве веб-служб.
Добавьте следующий метод в MathServices созданный класс:
Выберите Построение меню Сборка для создания веб-службы.
Потребление веб-службы
Добавьте ссылку для веб-службы MathService в новое консольное приложение.
На этом шаге создается класс прокси на клиентский компьютер. После существования класса прокси можно создавать объекты на основе класса. Каждый вызов метода, который делается с объектом, затем отправляется в единый идентификатор ресурса (URI) веб-службы (обычно в качестве запроса SOAP).
Создайте экземпляр созданного прокси-объекта. Поместите следующий код в функцию под названием Main :
Вызов метода на объекте прокси, созданный на предыдущем шаге, следующим образом:
Выберите Построение меню Сборка для создания приложения консоли.
Чтобы протестировать приложение, выберите Пуск в меню Отлаговка.
Дата последнего изменения: 7 июля 2010 г.
Применимо к: SharePoint Foundation 2010
В этой задаче программирования представлен обзор создания пользовательской веб-службы, действующей в контексте Microsoft SharePoint Foundation. Рассматривается процесс создания простой веб-службы "Hello World" в Microsoft Visual Studio 2010 и показывается, как можно изменить эту веб-службу для внедрения объектной модели SharePoint Foundation на стороне сервера для возвращения данных сайта и списка.
Создание и изменение файла статического обнаружения и файла языка описания веб-служб (WSDL).
Развертывание файлов веб-службы в каталог _vti_bin.
Включение для веб-службы обнаружения ее в списке Spdisco.aspx
Создание клиентского приложения для использования веб-службы.
Создание в веб-службе библиотеки классов, которые определяют программную логику веб-службы.
В Visual Studio выберите Файл, Создать и Веб-сайт.
В новом решении веб-службы создайте отдельный проект библиотеки классов для включения в него логики веб-службы. Чтобы создать проект, щелкните Файл, выберите Создать и Проект.
Замените файл классов по умолчанию в проекте библиотеки классов на файл классов службы по умолчанию, который размещен приложением Visual Studio в папке App_Code веб-службы.
Чтобы заменить файл классов на файл классов службы:
В окне Обозреватель решений перетащите файл Service.cs или Service.vb в верхний узел проекта библиотеки классов.
Удалите файлы Class1.cs или Class1.vb и Service.cs или Service.vb, которые оставались в папке App_Code.
Создайте строгое имя библиотеки классов:
В окне Обозреватель решений щелкните правой кнопкой мыши проект библиотеки классов, а затем выберите Свойства.
В диалоговом окне Свойства щелкните Подписывание, выберите Подписать сборку, затем выберите <Создать> в списке Выбрать файл ключа строгого имени.
В диалоговом окне Создать ключ строгого имени введите имя файла для ключа, снимите флажок Защитить мой файл ключа паролем и нажмите кнопку ОК.
Чтобы построить только проект библиотеки классов, щелкните правой кнопкой мыши проект в окне Обозреватель решений, а затем выберите Построить.
Чтобы использовать программу gacutil.exe для копирования DLL библиотеки классов в глобальный кэш сборок:
Чтобы открыть командную строку Visual Studio, нажмите кнопку Пуск, выберите Все программы, выберите Microsoft Visual Studio 2010, затем выберите набор средств Visual Studio и щелкните правой кнопкой элемент Командная строка Visual Studio (2010), выберите команду Запуск от имени администратора.
В командной строке введите команду в следующей форме и нажмите клавишу ВВОД.
gacutil.exe -if "<Full file system path to DLL>".
Теперь все готово для изменения данных сборки в файле веб-службы по умолчанию Service.asmx с помощью данных о библиотеке DLL, находящихся в глобальном кэша сборок. Чтобы получить данные из глобального кэша сборок, откройте каталог %windows%\assembly в проводнике Windows, щелкните правой кнопкой мыши сборку, а затем выберите Свойства.
Чтобы открыть файл Service.asmx на странице Обозреватель решений, щелкните правой кнопкой мыши файл, а затем выберите Открыть.
Удалите атрибут CodeBehind из директивы страницы в файле Service.asmx и измените содержимое атрибута Class так, чтобы директива соответствовала следующему формату, в котором имя сборки "MyServiceAssembly" и маркер открытого ключа являются значениями, указанными в диалоговом окне Свойства, открытом на 10-м шаге.
В Visual Basic включено пространство имен для определения класса, например MyServiceAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8f2dca3c0f2d0131".
Переименуйте ASMX-файл соответственным образом и сохраните изменения.
Создание и изменение файлов статического обнаружения и языка WSDL
Процедура создания и редактирования файлов статического обнаружения и языка WSDL
В проводнике Windows скопируйте ASMX-файл веб-службы в папку %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\LAYOUTS.
Запустите программу Disco.exe в командной строке из каталога LAYOUTS, чтобы создать файлы DISCO и WSDL. Для создания этих файлов в каталоге \LAYOUTS запустите команду в следующем формате:
Чтобы зарегистрировать пространства имен объектной модели SharePoint Foundation, откройте файлы DISCO и WSDL и замените открытие команды обработки XML — <?xml version="1.0" encoding="utf-8"?> — следующими командами.
В файле WSDL сделайте следующую аналогичную замену для указанного адреса SOAP.
Переименуйте файлы MyCustomWebServicedisco.aspx и MyCustomWebServicewsdl.aspx с учетом форматов таким образом, чтобы SharePoint Foundation смог обнаружить службу.
Развертывание файлов веб-службы в каталог _vti_bin
Виртуальный каталог _vti_bin сопоставляется с физическим каталогом %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\ISAPI, который содержит файлы веб-службы по умолчанию, используемые в SharePoint Foundation. Скопируйте новые файлы MyCustomWebServicewsdl.aspx и MyCustomWebServicedisco.aspx, а также файл MyCustomWebService.asmx, в папку ISAPI.
Из каталога _vti_bin функции веб-службы доступны для сайта, который указывается при добавлении веб-ссылки для службы.
Внесение новой веб-службы в файл spdisco.aspx
Чтобы сделать возможным обнаружение веб-службы в Visual Studio наряду с веб-службами SharePoint Foundation по умолчанию, откройте файл spdisco.aspx, расположенный в папке %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\ISAPI, и добавьте следующий код, задающий ASMX-файл для веб-службы.
Создание приложения Windows для использования веб-службы
После копирования файлов веб-службы в папку _vti_bin необходимо создать приложение Windows для использования этой веб-службы.
Процедура создания приложения Windows для использования веб-службы
Откройте Visual Studio, в меню Файл выберите Создать и щелкните Проект.
Введите имя приложения в поле Имя, укажите расположение файлов проекта в поле Расположение и нажмите кнопку ОК.
В окне Обозреватель решений щелкните правой кнопкой мыши проект, а затем выберите Добавить ссылку на службу.
В диалоговом окне Добавление ссылки на службу щелкните Дополнительно и в диалоговом окне Настройка ссылок на службы выберите Добавить веб-ссылку.
В адресной строке браузера Добавление веб-ссылки введите URL-адрес сайта, к которому применяется служба, как показано ниже.
Затем нажмите клавишу ВВОД.
Щелкните Добавить ссылку, чтобы загрузить контракт службы для веб-службы.
Откройте Form1 в конструкторе, откройте Панель элементов и перетащите кнопку в форму.
Дважды щелкните элемент управления Button1 в Form1, чтобы отобразить файл кода в редакторе кода, и добавьте следующий код, который вызывает пользовательский метод.
Внедрение объектной модели SharePoint Foundation
Теперь можно опробовать типы и члены объектной модели SharePoint Foundation в библиотеке классов веб-службы.
Процедура внедрения объектной модели SharePoint Foundation
Добавьте ссылку на сборку Microsoft.SharePoint. Щелкните правой кнопкой мыши проект библиотеки классов в окне Обозреватель решений, выберите Добавить ссылку, выберите SharePoint Foundation и нажмите кнопку ОК.
В файл проекта Service.cs или Service.vb необходимо импортировать пространства имен, соответствующие объектной модели. Например, чтобы использовать типы и члены пространств имен Microsoft.SharePoint и Microsoft.SharePoint.Utilities, добавьте следующие директивы.
Переименуйте метод в файле Service.cs или Service.vb. Например, измените имя с HelloWorld на GetSiteListCount.
Добавьте следующий код для отображения имени веб-сайта и числа списков, которые он содержит.
Перезапустите службы IIS, чтобы изменения в библиотеке DLL вступили в силу.
Чтобы создать новые версии DISCO- и WSDL-файлов, повторите шаги раздела "Создание файлов статического обнаружения и языка WSDL", но измените соответствующее имя метода привязки в DISCO-файле, например на GetSiteListCount.
Скопируйте новые версии файлов MyCustomWebServicedisco.aspx и MyCustomWebServicewsdl.aspx в папку ISAPI.
Откройте приложение Windows, созданное ранее, удалите старую ссылку на веб-службу для примера Hello World, соответственно измените имя метода и добавьте новую веб-ссылку в измененную веб-службу.
Дано три стороны треугольника: a , b , c .
Используя формулу Герона, разработать приложение, которое находит площадь треугольника. Приложение реализовать как Web-application .
Формула Герона имеет вид:
где p – полупериметр:
a, b, c – длина сторон треугольника.
⇑
Выполнение
1. Запустить MS Visual Studio
Пример создания приложения в MS Visual Studio по шаблону Windows Forms Application подробно описывается в теме:
⇑
2. Создание Web-приложения
Приложения типа Web могут вызываться из любого компьютера, подключенного к сети Internet. Для открытия такого приложения используется Web -браузер (например Opera , Google Chrome , Internet Explorer и другие).
Ниже указаны два способа создания Web -приложения в MS Visual Studio .
⇑
2.1. Создание Web-приложения (способ № 1)
Для этого способа, чтобы создать Web -приложение, нужно сначала вызвать команду (рис. 1):
Рис. 1. Команда создания нового веб-сайта
Например, в нашем случае, файлы будут сохраняться в папке
Рис. 2. Создание Web-сайта
⇑
2.2. Создание Web-приложения (способ № 2)
Существует также и другой способ создания Web -приложения с помощью команды (рис. 3)
Рис. 3. Команда создания нового проекта
Рис. 4. Команда создания Web-приложения
⇑
3. Создание приложения как веб-сайта
Для решения задачи выбираем первый способ.
После выполненных операций создается решение ( Solution ), в котором есть один проект типа веб-сайт (рис. 5).
Если запустить на выполнение данный проект, то внизу в правой части экрана ( SySTray ) отобразится окно загруженного локального сервера (рис. 6).
Рис. 6. Загрузка локального сервера для выполнения приложения
В результате запуска, в активном веб-браузере откроется страница с приблизительно таким текстом (рис. 8):
Рис. 8. Текст, который выводится в веб-браузере
⇑
4. Добавление формы к приложению
Добавим новую форму к Web -приложению.
Рис. 10. Добавление новой формы
После добавления, в Solution Explorer можно увидеть дополнительные два файла (рис. 11):
С помощью этих двух файлов можно изменять внешний вид формы и организовывать работу в ней.
С помощью кнопок Design и Source можно переключаться между режимом проектирования и режимом кода страницы Default.aspx (рис. 12).
Рис. 12. Режимы проектирования ( Design ) и кода ( Source )
⇑
5. Конструирование формы
Согласно с условием задачи, форма должна содержать следующие элементы управления:
⇑
5.1. Изменение размеров формы
Рис. 13. Изменение размеров формы в режиме проектирования
⇑
Для нашей задачи нужно вынести на форму следующие элементы управления:
При вынесении элемента управления в правой нижней части экрана (окно Properties ) можно изменять свойства элементов управления (рис. 14).
Рис. 14. Изменение свойств элементов управления Web -формы
В целом, после построения, форма приложения должна иметь вид как показано на рисунке 15.
Рис. 15. Форма приложения в режиме проектирования
⇑
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class _Default : System.Web.UI.Page < protected void Page_Load( object sender, EventArgs e) < >protected void Button1_Click( object sender, EventArgs e) < double a, b, c, p, s; a = Double .Parse(TextBox1.Text); b = Double .Parse(TextBox2.Text); c = Double .Parse(TextBox3.Text); p = (a + b + c) / 2; s = Math .Sqrt(p * (p - a) * (p - b) * (p - c)); Label4.Text = "S text-align: justify;">После запуска приложения на выполнение можно проконтролировать его работу в Web -браузере (рис. 16).
Рис. 16. Выполнение Web -приложения в браузере Opera
После этого можно выносить приложение на Web-сервер. Но это уже другая тема.
Введение
Описание
В этой статьей будем создавать следующий API:
API | Описание | Тело запроса | Тело ответа |
GET /api/todo | Получить все элементы списка дел | Нет | Массив элементов списка дел |
GET /api/todo/ | Получить элемент по идентификатору | Нет | Элемент списка дел |
POST /api/todo | Добавить новый элемент | Элемент списка дел | Элемент списка дел |
PUT /api/todo/ | Обновить существующий элемент | Элемент списка дел | Нет |
PATCH /api/todo/ | Обновить существующий элемент | Элемент списка дел | Нет |
DELETE /api/todo/ | Удалить элемент | Нет | Нет |
На диаграмме ниже показана архитектура приложения:
Создание проекта
Добавление класса модели
Модель — это объект, который представляет данные в нашем приложении. В данном случае единственная модель — это элемент списка дел.
Добавьте каталог с именем «Models». В обозревателе решений нажмите правую кнопку мыши на проекте. Выберите пункт Add > New Folder. Ведите имя каталога Models.
Примечание: классы модели могут находиться в любом месте проекта, но обычно их размещают в каталоге Models.
Добавьте класс TodoItem . Нажмите правую кнопку мыши на каталоге Models и выберите пункт Add > Class. Ведите имя класса TodoItem и нажмите Add.
Замените сформированный код следующим:
Добавление класса репозитория
Репозиторий — это объект, который инкапсулирует уровень данных и содержит логику для извлечения данных и направлениях их к модели. Хотя в данном приложении не используется база данных, имеет смысл показать, как можно внедрять репозитории в контроллеры. Создайте код репозитория в каталоге Models.
Начните с определения интерфейса репозитория с названием ITodoRepository . Используйте шаблон класса (Add New Item > Class).
Этот интерфейс определяет основные операции CRUD.
Затем добавьте класс TodoRepository , который реализует ITodoRepository :
Постройте приложение, чтобы убедиться, что компилятор не выдает ошибок.
Такой подход упрощает модульное тестирование контроллеров. Модульные тесты внедряют «фиктивную» или «имитационную» версию ITodoRepository . В этом случае тест нацелен на логику контроллера, а не на уровень доступа к данным.
Для внедрения репозитория в контроллер необходимо зарегистрировать его при помощи контейнеров DI. Откройте файл Startup.cs. Добавьте следующую директиву using:
В метод ConfigureServices добавьте выделенный код:
Добавление контроллера
В обозревателе решений нажмите правую кнопку мыши на каталоге Controllers. Выберите пункт Add > New Item. В окне Add New Item выберите шаблон Web API Controller Class. Введите имя класса TodoController .
Замените сформированный код следующим:
Таким образом определяется класс пустого контроллера. В следующих разделах описывается добавление методов для реализации API.
Получение элементов списка дел
Чтобы получить элементы списка дел, добавьте следующие методы в класс TodoController :
Эти методы реализуют два метода GET:
Маршрутизация и URL-пути
"" — это величина, заменяемая на идентификатор элемента todo . Когда GetById вызывается, значение “” в URL присваивается параметру id метода.
Возвращаемые значения
Метод GetAll возвращает IEnumerable . MVC автоматически сериализует объект в JSON и записывает JSON в тело ответа. Код ответа для этого метода — 200, в том случае если нет необработанных исключений (необработанные исключения переводятся в ошибки 5xx.)
В свою очередь метод GetById возвращает значение более общего типа IActionResult , который представлен большим количеством типов возвращаемых значений. GetById имеет два различных типа возвращаемых значений:
- Если нет соответствия запрашиваемому идентификатору, метод возвращает ошибку 404. Это происходит при возврате NotFound .
- В остальных случаях метод возвращает код 200 и тело ответа в формате JSON. Это происходит при возврате ObjectResult .
Запуск приложения
Реализация других операций CRUD
Добавим методы Create , Update и Delete . Этот процесс аналогичен тому, о чем речь шла ранее, поэтому здесь будет показан код и выделены основные отличия. Создайте проект после добавления или изменения кода.
Create
Использование Postman для отправки запроса Create
- Установите POST в качестве метода HTTP.
- Выберите переключатель Body.
- Выберите переключатель raw.
- Выберите тип JSON.
- В редакторе пар ключ-значение укажите элемент Todo следующим образом: "> .
- Нажмите Send.
Для доступа к ресурсу, который только что создан, можно использовать URL из заголовка Location. Повторно вызовите метод GetById , создавший именованный маршрут "GetTodo" :
Update
Update с использованием Patch
Читайте также: