Build and deploy a cross-platform webserver with a REST API using ASP.NET Core.
This will let you set up a minimal ASP.Net Core project. You can use it for the basis for other projects.
- .NET Core 3.1 SDK : https://dotnet.microsoft.com/download
- VSCode : https://code.visualstudio.com/ (recommended)
Checkout this repo.
Open the folder in VSCode. Open an integrated terminal window with PowerShell.
The WebServer directory contains a minimal ASP.NET Core web API project.
We can run it with the dotnet command.
cd WebServer
dotnet run
You should see the following:
info: Microsoft.Hosting.Lifetime[0]
Now listening on: http://localhost:5000
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\...\WebServer
The server is running at http://localhost:5000. Navigate to it in the web browser, and you should see a 'page can't be found' error.
The root doesn't serve any pages. Open WebServer/Controllers/ProductsController.
Look at the ProductsController class declaration:
[ApiController]
[Route("[controller]")]
public class ProductsController : ControllerBaseThe [ApiController] attribute means this is a 'controller' for a specific endpoint.
The [Route("[controller]")] means a route is mapped to the name of the controller, in this case, /product.
Look at the GetAll() method declaration:
[HttpGet]
public IEnumerable<string> GetAll()The [HttpGet] attribute means this method handles HTTP GET requests.
Therefore, a HTTP GET request for http://localhost:5000/Products should return something.
Open http://localhost:5000/Products in the browser.
Stop your server, and edit GetAll so it returns more data. For instance, amend it to serve "SQL Source Control" and "SQL Compare".
Open http://localhost:5000/Products to see the result.
You can change the URL the server listens to with the --urls argument when you use dotnet run
Try dotnet run --urls="http://*:5000"
The * wildcard means you can access your api using [machine-name]:5000, e.g. DEV-JOEB:5000
Install the .NET Core 3.1 Runtime: https://dotnet.microsoft.com/download
Build an executable for your application: dotnet publish --output="./output
You can now execute the webserver application. The --urls argument will also work.
So you can do something like:
.\output\WebServer.exe --urls="https://*:5000"
You can build the application for Mac and Linux also. See https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-publish.