DJT.Vertical 8.3.2

dotnet add package DJT.Vertical --version 8.3.2                
NuGet\Install-Package DJT.Vertical -Version 8.3.2                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="DJT.Vertical" Version="8.3.2" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add DJT.Vertical --version 8.3.2                
#r "nuget: DJT.Vertical, 8.3.2"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install DJT.Vertical as a Cake Addin
#addin nuget:?package=DJT.Vertical&version=8.3.2

// Install DJT.Vertical as a Cake Tool
#tool nuget:?package=DJT.Vertical&version=8.3.2                

DJT.Vertical

Vertical Slice architecture for Web APIs is an alternative to using controllers.

Using components

In your web application, include using DJT.Vertical.Http and call the following:


builder.Services.AddVerticalComponents();

var app = builder.Build();

app.UseVerticalComponents();

Service Attributes

Include the DJT.Vertical.Attributes namespace and start registering your dependency injected classes using the lifetime-named attributes. Each attribute also allows an optional key to be defined, therefore registering the class as a keyed service. For example:

[SingletonService(ImplementsType = typeof(IMyInterface),Key = "for_science")]
public class MySingletonService : IMyInterface
{
	public void DoSomething() 
	{
	}
}

[ScopedService]
public class MyScopedService ([FromKeyedServices("for_science")] IMyInterface singleton)
{
	public void DoSomethingElse()
	{
		singleton.DoSomething();
	}
}

Similarly, there is also a [TransientService] attribute.

Note: It is the assembly which calls directly AddVerticalComponents() which will be scanned for these attributes.

Request Handlers

Use the IRequestHandler<> interfaces to define the functionality of the API, using dependency injection for dependencies. I.e.

public class GetEmployeesHandler(MyDbContext db) : IRequestHandler<IEnumerably<Employees>>
{
	public IEnumerable<Employees> Execute()
	{
		return db.Employees.ToList();
	}
}

Async

Included in v8.1 are abstract classes for AsyncRequestHandler<> which require a cancellation token and obligate the return value wrapped in a Task<TRes>.

Exceptions

To return erroneous responses, use the included Exceptions, such as BadRequestException for a HTTP 400 response.

Custom response codes can be supplied using CustomStatusException.

Auth Service

A simple auth service for getting user claim information is included.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net8.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
8.3.2 112 7/23/2024
8.3.1 124 3/25/2024
8.3.0 140 3/18/2024 8.3.0 is deprecated because it has critical bugs.
8.2.0 126 3/9/2024
8.0.0 127 2/18/2024