Статьи

Загрузка данных из базы данных с использованием веб-API

В этой статье мы узнаем о загрузке данных из базы данных в  MVC  с помощью веб-API. Мы будем использовать  Visual Studio  2015 для создания веб-API и выполнения операций. В этом проекте мы собираемся создать  базу данных  и таблицу с именем  tbl_Subcribers,  которая фактически содержит список данных. Мы будем использовать наш обычный jQuery ajax для вызова Web API, как только данные будут готовы, мы отформатируем их в HTML-таблице. Я надеюсь, вам понравится это.

Фон

Что такое веб-API?

Web API — это своего рода платформа, которая делает создание HTTP-сервисов проще, чем когда-либо. Он может использоваться практически везде, включая широкий спектр клиентов, мобильных устройств, браузеров и т. Д. Он содержит обычные функции MVC, такие как модель, контроллер, действия, маршрутизация и т. Д. Он поддерживает все HTTP-глаголы, такие как POST, GET, DELETE, PUT.

Почему веб-API

Почему веб-API

Изображение предоставлено: blogs.msdn.com

Почему веб-API

Почему веб-API

Изображение предоставлено: forums.asp.net

Использование кода

Мы создадим наш проект в Visual Studio 2015. Чтобы создать проект, нажмите Файл-> Создать-> Проект.

CRUD_in_MVC_Using_Web_API

CRUD_in_MVC_Using_Web_API

CRUD_in_MVC_Using_Web_API

CRUD_in_MVC_Using_Web_API

Создать элемент управления

Теперь мы создадим контроль в нашем проекте.

CRUD_in_MVC_Using_Web_API_Adding_Control

CRUD_in_MVC_Using_Web_API_Adding_Control

Выберите  пустой API-контроллер в  качестве шаблона.

CRUD_in_MVC_Using_Web_API_Select_APIControl

CRUD_in_MVC_Using_Web_API_Select_APIControl

Как видите, мы выбрали пустой API-контроллер вместо обычного контроллера. Есть несколько различий между нашим обычным контроллером и пустым контроллером API.

Контроллер против Пустого Контроллера API

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

Узнайте больше:  Controller VS API Controller

Создать модель

Как вы все знаете, мы пишем логику в классе под названием модель в MVC. Поэтому следующий шаг, который нам нужно сделать, это создать модель.

Щелкните правой кнопкой мыши на Model и выберите Add new Items, а затем Class. Назовите это подписчиками. Мы собираемся обработать список подписчиков, которые все подписаны на ваш сайт.

Теперь мы создадим базу данных для нашего приложения.

Создать базу данных

CRUD_in_MVC_Using_Web_API_Create_Database

CRUD_in_MVC_Using_Web_API_Create_Database

Создав базу данных, вы можете увидеть ее в папке App_Data.

CRUD_in_MVC_Using_Web_API_Created_DB

CRUD_in_MVC_Using_Web_API_Created_DB

Теперь добавим новую таблицу в нашу базу данных.

CRUD_in_MVC_Using_Web_API_Adding_Table

CRUD_in_MVC_Using_Web_API_Adding_Table

CREATE TABLE [dbo].[Table]
(
    [SubscriberID] INT NOT NULL PRIMARY KEY, 
    [MailID] NVARCHAR(50) NOT NULL, 
    [SubscribedDate] DATETIME2 NOT NULL
)

Кажется, наша база данных уже готова.

Загрузка данных из базы данных с использованием веб-API

Загрузка данных из базы данных с использованием веб-API

Следующее, что нам нужно сделать, — это создать модель данных сущности ADO.NET. Так что мы будем делать это? Щелкните правой кнопкой мыши по вашей модели и нажмите на добавление нового элемента, в появившемся диалоговом окне выберите ADO.NET Entity Data Model. Назовите этот файл, здесь я дал имя SP. И на следующих шагах выберите таблицы, хранимые процедуры и представления, которые вы хотите.

Загрузка данных из базы данных с использованием веб-API

Загрузка данных из базы данных с использованием веб-API

Таким образом, новый файл будет создан в папке вашей модели.

Теперь мы создадим вызов ajax, чтобы вы могли вызывать веб-API. Мы будем использовать обычный Ajax с типом GET, так как нам нужно просто получить данные.

Элемент управления веб-API не возвращает ни результата действия, ни результата json, поэтому мы должны сделать это вручную. Мы будем использовать файл index.cshtml в качестве нашего представления

Мы будем называть наш веб-API следующим образом из представления Index.cshtml.

@section scripts
       {
       <script>
           $(document).ready(function () {
               $.ajax(
                   {
                       type: 'GET',
                       dataType: 'json',
                       contentType: 'application/json;charset=utf-8',
                       url: 'http://localhost:3064/api/Subscribers',
                       success: function (data) {
                           try {
                               debugger;
                               var html = '<table><thead><th>Mail ID</th><th>Subscription ID</th><th>Subscription Date</th></thead><tbody>';
                               $.each(data, function (key, val) {
                                   debugger;
                                   html += '<tr><td>'
                                       + '<a ' + 'href="mailto:' + val.MailID + '">' + val.MailID + '</a>' +
                                   '</td><td>' + val.SubscriberID + '</td><td>' + val.SubscribedDate + '</td></tr>';
                               });
                               html += '</tbody></table>';
                               $('#myGrid').html(html);
                           } catch (e) {
                               console.log('Error while formatting the data : ' + e.message)
                           }
                       },
                       error: function (xhrequest, error, thrownError) {
                           console.log('Error while ajax call: ' + error)
                       }
 
                   }
                   );
           });
       </script>
 
   }

Как только мы получим данные в успешной части вызова ajax, мы формулируем данные в таблице HTML и привязываем отформатированный html к элементу myGrid.

<div id="myGrid"></div>

Пожалуйста, обратите внимание, что URL-адрес, который вы даете, должен быть правильным, иначе у вас будут некоторые ошибки. Ваши действия не будут работать

Таким образом, мы называем наш веб-интерфейс API как http: // localhost: 3064 / api / Подписчики. Вы помните, что мы уже создали контроллер? Теперь мы вернемся к этому. Поэтому нам нужно создать действие, которое возвращает общий список подписчиков из базы данных, поэтому для этого мы напишем несколько строк кода следующим образом.

public List<tbl_Subscribers> getSubscribers()
        {
            try
            {
                using (var db = new SibeeshPassionEntities())
                {
                    Subscriber sb = new Subscriber();
                    return (sb.getSubcribers(db).ToList());
                }
                 
            }
            catch (Exception)
            {
 
                throw;
            }
        }

Здесь Subscriber — это наш класс модели. Чтобы получить ссылку на класс вашей модели в контроллере, вам необходимо включить пространство имен модели. Мы получаем список данных в типе tbl_Subcribers. Теперь сосредоточимся на модельном классе.

Вы можете увидеть коды действий модели здесь.

public List<tbl_Subscribers> getSubcribers(SibeeshPassionEntities sb)
       {
           try
           {
               if (sb != null)
               {
                   return sb.tbl_Subscribers.ToList();
               }
               return null;
           }
           catch (Exception)
           {
               throw;
           }
       }

Это вернет данные, которые доступны в таблице tbl_Subcribers в БД SibeeshPassion. Кажется, все установлено. Теперь, что еще нам нужно сделать? Да, нам нужно создать несколько записей в таблице. Пожалуйста, смотрите запрос вставки здесь.

INSERT INTO [dbo].[tbl_Subscribers] ([SubscriberID], [MailID], [SubscribedDate]) VALUES (1, N'[email protected]', N'2015-10-30 00:00:00')
INSERT INTO [dbo].[tbl_Subscribers] ([SubscriberID], [MailID], [SubscribedDate]) VALUES (2, N'[email protected]', N'2015-10-29 00:00:00')
INSERT INTO [dbo].[tbl_Subscribers] ([SubscriberID], [MailID], [SubscribedDate]

Итак, данные вставлены. Не так ли?

Загрузка данных из базы данных с использованием веб-API

Загрузка данных из базы данных с использованием веб-API

Ты знаешь?

Как у нас есть RouteConfig.cs в MVC, у нас есть другой файл класса с именем WebApiConfig.cs в Web API, который фактически устанавливает маршруты.

routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

Итак, запустим ли мы наш проект и увидим ли выход? Прежде чем приступить к запуску, я предлагаю вам стилизовать таблицу HTML, применив несколько CSS следующим образом.

<style>
        table,tr,td,th {
            border:1px solid #ccc;
            border-radius:5px;
            padding:10px;
            margin:10px;
        }
 
    </style>

Если все пойдет хорошо, вы получите вывод следующим образом.

Загрузка данных из базы данных с использованием веб-API

Загрузка данных из базы данных с использованием веб-API

Вот и все. Мы сделали это. Удачного кодирования!

Вывод

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