Execute ASP.NET Core WebAPI from Command Line . Source at https://github.com/ignatandrei/WebAPI2CLI
What if, instead of running the WebAPI ( or just the site ) and waiting for commands from the user, you want also to execute from the command line some controllers actions ?
This project let's you do that by enabling the command line with
< myexe >.exe --CLI_ENABLED=1 --CLI_Commands=" ... "
The command names are in a cli.txt file that can be generated with
< myexe >.exe --CLI_ENABLED=1 --CLI_HELP=1
Install the package https://www.nuget.org/packages/ExtensionNetCore3
Modify your ASP.NET Core as below:
public void ConfigureServices(IServiceCollection services)
{
services.AddCLI();
//your code omitted
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseCLI();
//your code omitted
}
And that is all modifications that you need to do for the source code.
First, you must generate the definition of the commands. For this, we take the OPEN API (swagger ) approach.
For this, after you compile the project, you will run your .exe program with arguments:
< myexe >.exe --CLI_ENABLED=1 --CLI_HELP=1
( or make this from Visual Studio, Project, Properties, Debug )
This will generate a cli.txt file with all definitions of the WebAPI. ( if your API does not appear, check if you have ApiController defined)
Open your cli.txt file and modify the names of the commands as you wish (also , the arguments )
Copy this cli.txt in your solution and be sure that is copied with the exe ( in Visual Studio right click the file, properties, Build Action = Content, CopyToOutputDirectory = Copy if newer)
Ensure that the file is near your exe WebAPI.
Run the exe with the following:
< myexe >.exe --CLI_ENABLED=1 --CLI_Commands="your first command,your second command, and enumerate all commands"
The program will run the commands and output the result.
Modify the endpoints to add zip
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MakeZip(app);
});
and browser to /zip to download the whole application. More details here( including a demo)
https://ignatandrei.github.io/WebAPI2CLI/
Environment Variables: see https://github.com/ignatandrei/Interpreter