ahmed_sa Ответов: 2

Как преобразовать этот код из проекта MVC в web api ?


проблема

Как преобразовать этот код пожалуйста из проекта mvc в веб API


Я работаю над проектом mvc в asp.net ядро 2.1

Я создаю контроллер работника и внутри него я делаю две функции вследствие действий для создания

новый сотрудник и сохраните его следующим образом :

Я решил преобразовать вышеперечисленные функции в web API, чтобы

Как конвертировать создать новую страницу сотрудника или формы GET и Post по действиям выше в веб-API ?

Что я уже пробовал:

public IActionResult Create()
        {
           var model = new Employee();
            if (id == null)
            {
                
                model.EmployeeId = _repository.GetAll().Max(Employee => Employee.EmployeeId) + 1;
             }
            return View(model);
        }

      
        [HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Create(Employee employee)
        {
            if (ModelState.IsValid)
            {
                _context.Add(employee);
                await _context.SaveChangesAsync();
                return RedirectToAction(nameof(Index));
            }
            return View(employee);
        }

2 Ответов

Рейтинг:
2

Afzaal Ahmad Zeeshan

Как уже упоминалось в решении 1, MadMyche, вы не можете просто конвертировать свои приложения в API, где сам API является отдельным способом или методом разработки приложений. API имеет так много требований, таких как отсутствие состояния, безголовость, кросс-платформенность и кросс-устройство. API-интерфейсы работают непосредственно по протоколу HTTP и не требуют браузера для отображения содержимого. Таким образом, взгляды и т. д. не будут нужны.

Передача репрезентативного состояния - Википедия[^]

Таким образом, вы будете использовать формат обмена данными, например JSON или XML, а затем возвращать данные, используя эти форматы, а затем получать доступ к ним от клиента. Так вот в чем дело, вам нужно изменить вид на модели—вы возвращаете данные вместо HTML документа Затем эти данные могут быть доступны в любом месте и проанализированы.

Пожалуйста, посмотрите эту мою статью, чтобы понять, как это может произойти, ASP.NET 5 спокойный веб-API Твара и Windows 10 родные приложения[^]

Ваш код будет изменен на следующий код,

// Change from IActionResult to the data, this will be serialized to JSON (or XML)
[HttpPost]
public Employee Create()
{
    var model = new Employee();
    if (id == null)
    {
        
        model.EmployeeId = _repository.GetAll().Max(Employee => Employee.EmployeeId) + 1;
    }

    // Return the data itself, not the View
    return model;
}

// You can do the same "async" thing using API too, just return the data
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<Employee> Create(Employee employee)
{
    // See below for more ways to capture, bind and validate the model values.
    _context.Add(employee);
    await _context.SaveChangesAsync();
    return RedirectToAction(nameof(Index));

    // Return the data again
    return employee;
}
Вот еще одна интересная вещь, поскольку вы используете API, ваши пользователи могут загружать данные с помощью любого метода, строки запроса, публиковать их через тело HTTP, отправлять файл, отправлять в виде форм-данных, что угодно. Вам нужно проверить данные с помощью таких методов, как [FromBody], прием.

Привязка модели в ASP.NET ядро | Microsoft Docs[^]


Рейтинг:
0

MadMyche

Как правило, сборка веб-API будет представлять собой дроп-Ин ваших существующих моделей и контроллеров с очень небольшими изменениями кода. Что будет отличаться, так это то, что API не имеют переднего конца.

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

Вот некоторые документы о том, как начать работу:
Начните с того, что ASP.NET Web API 2 (C#) | Microsoft Docs[^]


ahmed_sa

только один вопрос я делаю это как веб api для подключения к angular на стороне клиента
таким образом, чтобы создать метод GET должен быть написан в веб-API или может осуществляться от переднего плана

ahmed_sa

и сначала создайте функцию get type, которая возвращает max record + 1
эта функция также будет выполняться на веб-API
если надо
Как это написать пожалуйста

MadMyche

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