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" />
paket add KurzSharp --version 4.2.0
#r "nuget: KurzSharp, 4.2.0"
// Install KurzSharp as a Cake Addin #addin nuget:?package=KurzSharp&version=4.2.0 // Install KurzSharp as a Cake Tool #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 class
and add relevant Attribute for ex:RestApi
[GrpcApi] // Whicherver is desired
[RestApi]
[GraphQlApi]
[AdminDashboard]
public partial class Product
{
public Guid Id { get; set; }
}
- Configure
KurzSharp
by 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
override
the 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. |
.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.