Пользовательский метод для веб-API, который не является стандартным методом CRUD - PullRequest
0 голосов
/ 16 января 2020

Я заметил, что в большинстве веб-приложений только упоминаются методы CRUD. Мой вопрос, а как насчет тех методов, которые не CRUD? Например, если у меня есть модель для сотрудника со следующими свойствами: Id, имя, адрес электронной почты, имя пользователя и пароль. Для административного модуля, для update employee function, проблем нет, потому что веб-API будет в CRUD. Например, ниже:

public class EmployeeController : ApiController
{
    private AppDbContext db = new AppDbContext();

// PUT api/Employee/5
    public IHttpActionResult PutEmployee(int id, Employee employee)
    {

        if (id != employee.EmployeeID)
        {
            return BadRequest();
        }

        db.Entry(employee).State = EntityState.Modified;

        try
        {
            db.SaveChanges();
        }
        catch (DbUpdateConcurrencyException)
        {
            if (!EmployeeExists(id))
            {
                return NotFound();
            }
            else
            {
                throw;
            }
        }

        return StatusCode(HttpStatusCode.NoContent);
    }
}

Но для модуля сотрудника, как насчет функции change password? Нужно ли создавать еще один контроллер с put глаголом только для каждой функции?

Я нашел статью , которая связана с моим вопросом. Как создать собственный метод, например, депозит (httppost) и witdrawal (httppost) для программы банкомата?

1 Ответ

1 голос
/ 16 января 2020

Это зависит от ситуации. Если вы чувствуете, что пароль является ресурсом самого себя, тогда вы можете иметь следующее:

PUT api/customer/{id}/password

Это будет в вашем контроллере

public IHttpActionResult PutCustomerPassword(int id, Password password)

Если в Customer указан только строка, то обновите sendind нового пользователя в объекте Employee.

Конечно, вы можете использовать наследование, создав новый базовый контроллер, который имеет некоторое управление пользователями. функциональность и обмен между Сотрудником и Заказчиком. Таким образом, вы можете использовать CustomerController и EmployeeController в качестве точки входа и вызывать код BaseController для выполнения реальной работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...