.NET - Api()
Creates a new HTTP API.
using Nitric.Sdk;var api = Nitric.Api("main");Nitric.Run();
Parameters
- Name
name
- Required
- Required
- Type
- string
- Description
The unique name of this API within the app. Subsequent calls to
api
with the same name will return the same object.
- Name
securityDefinitions
- Optional
- Optional
- Type
- Dictionary<string, SecurityDefinition>
- Description
Security definitions defined by this API.
- Name
security
- Optional
- Optional
- Type
- Dictionary<string, string[]>
- Description
Security rules to apply with scopes to the entire API. Keys must match a
securityDefinition
.
- Name
SecurityDefinition
- Optional
- Optional
- Type
- Description
A
SecurityDefinition
object is one of the following:- Name
issuer
- Optional
- Optional
- Type
- string
- Description
The issuer for the JWT tokens e.g.
https://account.region.auth0.com
.
- Name
audiences
- Optional
- Optional
- Type
- string[]
- Description
The
aud
that will be applied to JWT tokens from the issuer.
Notes
The middleware
property on the options
param is useful for applying universal middleware such as CORS headers or Auth, across an entire API from a single place.
Examples
Create an API
using Nitric.Sdk;var api = Nitric.Api("main");Nitric.Run();
Create an API with universal middleware
using Nitric.Sdk;private HttpContext ValidateRequest(HttpContext ctx, Func<HttpContext, HttpContext> next){// Validation logicreturn next(ctx);}var api = Nitric.Api("main", new ApiOptions(Middleware: new Middleware<HttpContext>[] { ValidateRequest }));Nitric.Run();
Create an API with a base path
If you need to put all the routes in your api below a shared base path, you can do that with the BaseRoute
option. In this example we ensure all routes start with /api/v1/
before the route specific path.
using Nitric.Sdk;var api = Nitric.Api("main", new ApiOptions(BaseRoute: "/api/v1"));Nitric.Run();
Apply JWT authentication to an API
using Nitric.Sdk;var secureApi = Nitric.Api("main", new ApiOptions(// You can optionally apply security rules to the entire APISecurity: new Dictionary<string, string[]>{// apply the 'user security definition the whole API'{"user",// Optionally apply required scopes to this api// in this case users will require the products:read scope to access the APInew string[] { "products:read" }},},// security requirements for your API are defined hereSecurityDefinitions: new Dictionary<string, SecurityDefinition>{// define a security definition called 'user'{ "user",new JwtSecurityDefinition('https://example-issuer.com',new string[] { "YOUR_AUDIENCES" })}}));Nitric.Run();