Magicalizer - это небольшая, супер простая и легкая библиотека, которая позволяет создавать полностью изготовленное веб -приложение REST API ASP.NET с минимальным обычным кодом.
В большинстве случаев все, что вам нужно написать, это классы DTO/модель/сущность, фильтры и валидаторы для них. Вот и все. Ваше веб-приложение будет автоматически поддерживать сложную фильтрацию (включая несколько вложенных свойств объекта, диапазонов и т. Д.), Комплексную сортировку (многочисленные вложенные свойства объекта с разными направлениями), лиц, сложные включения (вложенные свойства объекта), гибкая и мощная валидация как на уровне DTO, так и на уровне моделей (использование Fluentvalidation) и на основе политических авторизации для получения, Post, Plate, и Delete (Yese Soperted), подтвержденные).
Один важный момент: в то время как Magicalizer обрабатывает тяжелую работу, вы все равно можете заменить любую реализацию по умолчанию своей собственной при необходимости. Как только вы создаете пользовательскую реализацию службы для любой модели, она автоматически заменит по умолчанию. То же самое относится и к контроллерам. Неважно, где вы размещаете свои классы DTO/модель/объекты, валидаторы, услуги или контроллеры - они будут обнаружены и разрешены автоматически. Это позволяет невероятно легко повторно использовать код и создание развязенного программного обеспечения.
Запустите веб -приложение и попробуйте следующие запросы (вы можете использовать тестовую базу данных из этого проекта).
GET: /v1/categories GET: /v1/categories?name.contains=izza GET: /v1/categories?products.any.photos.any.filename.contains=.jpg&fields=products.photos GET: /v1/categories/1 GET: /v1/categories/5?fields=products.photos GET: /v1/products GET: /v1/products?id.in=1&id.in=2 GET: /v1/products?category.id=5&sorting=+name&offset=0&limit=5 GET: /v1/products?category.id=5&sorting=-name&offset=0&limit=5 GET: /v1/products?category.name.equals=Pizza&name.contains=ana&fields=category POST: /v1/categories { "name" : " Sushi " } PUT: /v1/categories { "id" : 1 , "name" : " Not sushi " } PATCH: /v1/categories/1 [{ "op" : " replace " , "path" : " name " , "value" : " Sushi again o_O " }] DELETE: /v1/categories/1 Источники на GitHub: https://github.com/magicalizer/magicalizer
Автор: http://sikorsky.pro/