Как правильно организовать архитектуру Wep Api?
Пример: есть контроллер students
, в котором get-метод возвращает студента по id в бд. Если мне нужно получить студентов только с 1 группы, мне нужно создавать новый контроллер studentSelectByGroupe
c одним методом? А потом мне нужно выбрать только с одного отделения, опять новый контроллер?
Получается, при большом приложении построенным на Api, нужно плодить очень много файлов-контроллеров? Или все-же можно нарушать REST и делать в одном контролере много разных методов? Но при этом же, как я понимаю, нарушается солид?
Как правильно построить Api?
У вас должен быть один Controller
, где вы описываете необходимые методы именно этого контролла.
К примеру, работаем со студентами. У нас есть общий Controller
под студентов StudentsController
(к прмеру). В нем мы реализовываем то, что будет связано со студентами (удаление, добавление, получение и так далее). :
public class StudentsController : Controller
{
//.....
// GET: api/Students
[HttpGet]
public IEnumerable GetStudents()
{
return Context.Students.Take(15);
}
// GET: api/Students/5
[HttpGet("{id}")]
public async Task<IActionResult> GetStudent([FromRoute] string id)
{
var filtersModel = await Context.Students.Where(s => s.Group == id);
return Ok(filtersModel);
}
//...
}
Вот к примеру (писал на коленке, за работоспособность не отвечаю, но саму суть уловите), у нас есть один Controller
и с помощью него мы получаем по ссылке сайт.рр/api/Students
список 15-ти студентов, а если в запрос добавим ещё и id студента (сайт.рр/api/Students/petrov33
), то мы получаем объект нужного нам студента.
То есть Controller
это у вас именно сайт.рр/api/**Students**
в адресе и методы внутри должны быть все связаны с этим Controller
. Не стоит писать в Controller
студентов логику вывода бухгалтерии или книг, ведь не логично, если вы будете писать сайт.рр/api/Students/книги/Война_и_Мир
(если только конечно книги, это не книги самого студента, тогда да..)
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Получаю с сервера данные, дата имеет такой формат: 2018-03-15T00:00:00+03:00
Как можно, перед тем как сделала депозит 1050, спарсить → конвертировать в float → записать данные которые были до депозита (1138
На компьютере стояла Windows 7, было произведено обновление до 10Перестали запускаться приложения WPF