KurzSharp 4.2.0
dotnet add package KurzSharp --version 4.2.0
NuGet\Install-Package KurzSharp -Version 4.2.0
<PackageReference Include="KurzSharp" Version="4.2.0" />
<PackageVersion Include="KurzSharp" Version="4.2.0" />
<PackageReference Include="KurzSharp" />
paket add KurzSharp --version 4.2.0
#r "nuget: KurzSharp, 4.2.0"
#:package KurzSharp@4.2.0
#addin nuget:?package=KurzSharp&version=4.2.0
#tool nuget:?package=KurzSharp&version=4.2.0
KurzSharp
Easily scaffold non-production APIs in any or all of following Architectures:
- GraphQl (HotChocolate)
- Grpc (Code First protobuf-net.Grpc)
- REST (ASP.NET Core Controllers)
and Explore Data with:
AdminDashboard (using Blazor, Radzen Table and MudBlazor UI)
Minimum required dotnet version: .NET8
Usage
- Create any model with a
partial classand add relevant Attribute for ex:RestApi
[GrpcApi] // Whicherver is desired
[RestApi]
[GraphQlApi]
[AdminDashboard]
public partial class Product
{
public Guid Id { get; set; }
}
- Configure
KurzSharpby default Data is stored in Memory with Entity FrameworkUseInMemoryDatabase
services.AddKurzSharp();
For Database add relavent Db package for Entity Framework and configure KurzSharp similar way to Entity Framework
config. (ex: PostgresDb):
services.AddKurzSharp(o => o.UseNpgsql(configuration.GetConnectionString("ProductsDb")));
Map Routes and Services:
app.MapKurzSharpServices();
🎉 You API is ready, Run project and open Swagger Docs.
For GraphQl API open Bana Cake Pop at http://localhost:5114/graphql
For REST or Grpc API open Swagger at http://localhost:5114/swagger
For Admin Dashboard UI open http://localhost:5114/KurzSharp/ or sub page with /{EntityName}s.
For more information please check examples/TestApi
Features:
- Hook into process to control how/what information on Entity is modified/observed with following hooks. Hook
automatically attached the Model, just
overridethe required ones.TDto OnBeforeCreate(TDto dto)IEnumerable<TDto> OnBeforeCreate(IEnumerable<TDto> dtos)IQueryable<TDto> OnBeforeRead(IQueryable<TDto> dtos)TDto OnBeforeRead(TDto dto)TDto OnBeforeUpdate(TDto dto)Enumerable<TDto> OnBeforeUpdate(IEnumerable<TDto> dto)TDto OnBeforeDelete(TDto dto)IEnumerable<TDto> OnBeforeDelete(IEnumerable<TDto> dto)
Ex:
[RestApi]
public partial class Product
{
private readonly ILogger<Product> _logger;
public Product(ILogger<Product> logger)
{
_logger = logger;
}
public Guid Id { get; set; }
public string Name { get; set; } = string.Empty;
public string Password { get; set; } = string.Empty;
public override ProductDto OnBeforeCreate(ProductDto dto)
{
_logger.LogInformation("DI is working...");
return dto;
}
}
How it works:
When a KurzSharp attributes like RestApi, GraphQlApi or GrpcApi is added on some Model class, it creates a new
Dto entity which has the same properties as the Model. The Model is used to store data through
Entity Framework Core and Dto is sent over the wire through API. It also takes attributes from the properties and
puts them on the Dto's properties for example: JsonIgnoreAttribute.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
-
net8.0
- Extensions.MudBlazor.StaticInput (>= 2.1.2)
- HotChocolate (>= 13.9.14)
- HotChocolate.AspNetCore (>= 13.9.14)
- HotChocolate.Data.EntityFramework (>= 13.9.14)
- Microsoft.EntityFrameworkCore.InMemory (>= 8.0.8)
- MudBlazor (>= 7.8.0)
- protobuf-net.Grpc.AspNetCore (>= 1.1.1)
- protobuf-net.Grpc.ClientFactory (>= 1.1.1)
- protobuf-net.Grpc.Reflection (>= 1.1.1)
- Radzen.Blazor (>= 5.2.5)
- Swashbuckle.AspNetCore (>= 6.8.1)
- System.ServiceModel.Primitives (>= 8.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.