Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Wissance/WebApiToolkit

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Wissance.WebApiToolkit

Awesome GitHub code size in bytes GitHub issues GitHub Release Date Wissance.WebApiToolkit CI

  • Prev Version <= 3.0.0 Nuget Downloads
  • Core Nuget Downloads
  • Ef extensions NugetDownloads
  • Cloud AWS S3 utils NugetDownloads

WebApiToolkit helps to build application easily

One Line of code for Fully functional CRUD Controller with Swagger doc

1 line to add controller

Why Wissance.WebApiToolkit

Without With Wissance.WebApiToolkit
⛔ Manual support for the API uniformity ✅ Output of all REST methods is standardize
⛔ Every Controller requires at least 20 min to be written ✅ Up to one line of code for fully functional CRUD
⛔ Inconsistent error response ✅ Unified error format out of the box
⛔ Requires to rewrite controllers to add a new
technology
✅ Requires only a new Manager class
⛔ Not supporting bulk operation by default ✅ Up to one line of code for fully functional BULK API
⛔ Controller logic can't be easily used for
gRPC or SignalR
✅ You could have the same Manager to
handle REST, gRPC,and a SignalR simultaneously
⛔ Paging and Sorting should be written for
every controller separately
✅ Paging and sorting are implemented
out of the box in the uniform manner

Minimal example

For the full doc see the 📚 project wiki, to add in one line, for example i break it to Assembly get and add Controller, i.e.:

  1. Generate assembly:
Assembly stationControllerAssembly = services.AddSimplifiedAutoController<StationEntity, Guid, EmptyAdditionalFilters>(
                provider.GetRequiredService<ModelContext>(), "Station",
                ControllerType.FullCrud, null, provider.GetRequiredService<ILoggerFactory>());
  1. Add Controller from assembly:
services.AddControllers().AddApplicationPart(stationControllerAssembly).AddControllersAsServices();

Key Features

  • 🔥 REST API Controller with full CRUD contains only 20 lines of code (~ 10 are imports)
    • GET methods have built-in paging support;
    • GET methods have built-in sorting and filter by query parameters;
  • 🚀 BULK operations with objects (Bulk Create, Update and Delete) on a Controller && interface level
  • 🧠 support to work with any persistent storage (IModelManager interface); Good built-in EntityFramework support (see EfModelManager class). See WeatherControl App which has
  • 🎨 Manager classes that support file operation over:
    • web folders (folders from mounted devices or just local folders)
    • S3 AWS-compatible (tested with Yandex Object Storage and previously with Cloudflare R2 and Amazon S3)

🆒 Bulk vs 🙅‍♂️ Non-Bulk, Wissance.WebApiToolkit has Bulk out of the box:

Bulk vs Non Bulk

  • 😱 Elapsed time in Non-Bulk REST API with EF is ~976 ms.
  • 🔥 Elapsed time in Bulk API with EF is ~4 ms.

✨ Result : Bulk API is almost ~250 x faster!

Additional materials (Post, articles, video)

You could see our articles about Toolkit usage:

Contributors

Packages

No packages published

Contributors 2

  •  
  •  

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.