Makspll.PathfinderLib
0.4.1
See the version list below for details.
dotnet add package Makspll.PathfinderLib --version 0.4.1
NuGet\Install-Package Makspll.PathfinderLib -Version 0.4.1
<PackageReference Include="Makspll.PathfinderLib" Version="0.4.1" />
paket add Makspll.PathfinderLib --version 0.4.1
#r "nuget: Makspll.PathfinderLib, 0.4.1"
// Install Makspll.PathfinderLib as a Cake Addin #addin nuget:?package=Makspll.PathfinderLib&version=0.4.1 // Install Makspll.PathfinderLib as a Cake Tool #tool nuget:?package=Makspll.PathfinderLib&version=0.4.1
Pathfinder
<p align="center"> <img src="https://i.imgur.com/TEDoP2L.jpeg" alt="Pathfinder" width="300"/> </p>
Finds and outputs all API routes found in a .NET assembly in textual or JSON format.
Features
- Attribute based routing
- Conventional routing (templates + defaults have to be specified in a config file)
- .NET core support
- .NET framework support
- JSON and Text output
- Configurable backing lib for projects with custom routing mechanisms
- Customizable template based report generation (see report for assemblies in /test_assemblies)
Installation
Prerequisites
- .NET 7 or later installed (only for running CLI, not in your project)
CLI
dotnet tool install -g Makspll.Pathfinder
Usage
pathfinder help
echo "Analyze and report on a dll"
pathfinder analyze **/bin/**/yourdllname.dll
pathfinder report **/bin/**/yourdllname.dll
Configuration
Config file
The program is configured via pathfinder.json
files found in your project. If the file is not found you can specify a path via the -c
flag.
Currently the file needs to specify all your conventional routing configuration (anything that isn't attribute based).
.NET framework
In .NET framework projects, you will need to specify whether each of your routes is an MVC or API route. This is done by adding a Type
field to each route in the config file.
{
"ConventionalRoutes": [
{
"Template": "conventionalprefix/{controller}/{action}",
"Type": "MVC"
},
{
"Template": "conventionalprefix2/{controller}",
"Defaults": {
"action": "DefaultAction"
},
"Type": "MVC"
},
{
"Template": "conventionalwithnoactionspecs",
"Defaults": {
"controller": "DefaultConventional",
"action": "DefaultAction"
},
"Type": "MVC"
},
{
"Template": "apiconventionalprefix/{controller}/{action}",
"Type": "API"
},
{
"Template": "apiconventionalprefix2/{controller}",
"Defaults": {
"action": "DefaultAction"
},
"Type": "API"
},
{
"Template": "apiconventionalwithnoactionspecs",
"Defaults": {
"controller": "ApiDefaultConventionalApi",
"action": "DefaultAction"
},
"Type": "API"
}
]
}
.NET core
.NET core does not make such a distinction, you shouldn't specify the type of controller:
{
"ConventionalRoutes": [
{
"Template": "conventionalprefix/{controller}/{action}"
},
{
"Template": "conventionalprefix2/{controller}",
"Defaults": {
"action": "DefaultAction"
}
},
{
"Template": "conventionalwithnoactionspecs",
"Defaults": {
"controller": "DefaultConventional",
"action": "DefaultAction"
}
}
]
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net7.0 is compatible. 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 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. |
-
net7.0
- ANSI.Console (>= 2.5.0)
- CommandLineParser (>= 2.9.1)
- dnlib (>= 4.4.0)
- FluentResults (>= 3.16.0)
- Glob (>= 1.1.9)
- Handlebars.Net (>= 2.1.6)
- Newtonsoft.Json (>= 13.0.3)
- System.Reflection.MetadataLoadContext (>= 8.0.0)
-
net8.0
- ANSI.Console (>= 2.5.0)
- CommandLineParser (>= 2.9.1)
- dnlib (>= 4.4.0)
- FluentResults (>= 3.16.0)
- Glob (>= 1.1.9)
- Handlebars.Net (>= 2.1.6)
- Newtonsoft.Json (>= 13.0.3)
- System.Reflection.MetadataLoadContext (>= 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.