Class RouterBuilder
- java.lang.Object
-
- io.vertx.reactivex.ext.web.openapi.RouterBuilder
-
public class RouterBuilder extends Object
Interface to build a Vert.x Web from an OpenAPI 3 contract.
To add an handler, useoperation(java.lang.String)(String, Handler)}
Usage example:RouterBuilder.create(vertx, "src/resources/spec.yaml", asyncResult -> { if (!asyncResult.succeeded()) { // IO failure or spec invalidelse { RouterBuilder routerBuilder = asyncResult.result(); RouterBuilder.operation("operation_id").handler(routingContext -> { // Do something }, routingContext -> { // Do something with failure handler }); Router router = routerBuilder.createRouter(); } }); }
Handlers are loaded in this order:
- Body handler (Customizable with
- Custom global handlers configurable with
- Global security handlers defined in upper spec level
- Operation specific security handlers
- Generated validation handler
- User handlers or "Not implemented" handler
originalnon RX-ified interface using Vert.x codegen.
-
-
Field Summary
Fields Modifier and Type Field Description static TypeArg<RouterBuilder>__TYPE_ARG
-
Constructor Summary
Constructors Constructor Description RouterBuilder(RouterBuilder delegate)RouterBuilder(Object delegate)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description RouterBuilderbodyHandler(BodyHandler bodyHandler)Deprecated.static voidcreate(Vertx vertx, String url)Likestatic voidcreate(Vertx vertx, String url, Handler<AsyncResult<RouterBuilder>> handler)Likestatic voidcreate(Vertx vertx, String url, OpenAPILoaderOptions options)Likestatic voidcreate(Vertx vertx, String url, OpenAPILoaderOptions options, Handler<AsyncResult<RouterBuilder>> handler)LikeRoutercreateRouter()Construct a new router based on spec.booleanequals(Object o)RouterBuildergetDelegate()OpenAPIHoldergetOpenAPI()RouterBuilderOptionsgetOptions()SchemaParsergetSchemaParser()Deprecated.SchemaRoutergetSchemaRouter()Deprecated.inthashCode()RouterBuildermountServicesFromExtensions()Introspect the OpenAPI spec to mount handlers for all operations that specifies a x-vertx-event-bus annotation.static RouterBuildernewInstance(RouterBuilder arg)Operationoperation(String operationId)Access to an operation defined in the contract withoperationIdList<Operation>operations()RouterBuilderrootHandler(Handler<RoutingContext> rootHandler)Add global handler to be applied prior to being generated.static io.reactivex.Single<RouterBuilder>rxCreate(Vertx vertx, String url)Likestatic io.reactivex.Single<RouterBuilder>rxCreate(Vertx vertx, String url, OpenAPILoaderOptions options)LikeSecuritySchemesecurityHandler(String securitySchemeName)Creates a new security scheme for the required .RouterBuildersecurityHandler(String securitySchemeName, AuthenticationHandler handler)Mount to paths that have to follow a security schema a security handler.RouterBuilderserviceExtraPayloadMapper(Function<RoutingContext,JsonObject> serviceExtraPayloadMapper)When set, this function is called while creating the payload ofRouterBuildersetOptions(RouterBuilderOptions options)Set options of router builder.StringtoString()
-
-
-
Field Detail
-
__TYPE_ARG
public static final TypeArg<RouterBuilder> __TYPE_ARG
-
-
Constructor Detail
-
RouterBuilder
public RouterBuilder(RouterBuilder delegate)
-
RouterBuilder
public RouterBuilder(Object delegate)
-
-
Method Detail
-
getDelegate
public RouterBuilder getDelegate()
-
operation
public Operation operation(String operationId)
Access to an operation defined in the contract withoperationId- Parameters:
operationId- the id of the operation- Returns:
- the requested operation
-
bodyHandler
@Deprecated public RouterBuilder bodyHandler(BodyHandler bodyHandler)
Deprecated.Supply your own BodyHandler if you would like to control body limit, uploads directory and deletion of uploaded files. If you provide a null body handler, you won't be able to validate request bodies- Parameters:
bodyHandler-- Returns:
- self
-
rootHandler
public RouterBuilder rootHandler(Handler<RoutingContext> rootHandler)
Add global handler to be applied prior to being generated.
Please note that you should not add a body handler inside that list. If you want to modify the body handler, please usebodyHandler(io.vertx.reactivex.ext.web.handler.BodyHandler)- Parameters:
rootHandler-- Returns:
- self
-
mountServicesFromExtensions
public RouterBuilder mountServicesFromExtensions()
Introspect the OpenAPI spec to mount handlers for all operations that specifies a x-vertx-event-bus annotation. Please give a look at vertx-web-api-service documentation for more informations- Returns:
- self
-
setOptions
public RouterBuilder setOptions(RouterBuilderOptions options)
Set options of router builder. For more infoRouterBuilderOptions- Parameters:
options-- Returns:
- self
-
getOptions
public RouterBuilderOptions getOptions()
- Returns:
- options of router builder. For more info
RouterBuilderOptions
-
getOpenAPI
public OpenAPIHolder getOpenAPI()
- Returns:
- holder used by self to process the OpenAPI. You can use it to resolve
$refs
-
getSchemaRouter
@Deprecated public SchemaRouter getSchemaRouter()
Deprecated.- Returns:
- schema router used by self to internally manage all
Schemainstances
-
getSchemaParser
@Deprecated public SchemaParser getSchemaParser()
Deprecated.- Returns:
- schema parser used by self to parse all
Schema
-
serviceExtraPayloadMapper
public RouterBuilder serviceExtraPayloadMapper(Function<RoutingContext,JsonObject> serviceExtraPayloadMapper)
When set, this function is called while creating the payload of- Parameters:
serviceExtraPayloadMapper-- Returns:
- self
-
securityHandler
public SecurityScheme securityHandler(String securitySchemeName)
Creates a new security scheme for the required .- Parameters:
securitySchemeName-- Returns:
- a security scheme.
-
createRouter
public Router createRouter()
Construct a new router based on spec. It will fail if you are trying to mount a spec with security schemes without assigned handlers
Note: Router is built when this function is called and the path definition ordering in contract is respected.- Returns:
-
create
public static void create(Vertx vertx, String url, Handler<AsyncResult<RouterBuilder>> handler)
Like- Parameters:
vertx-url-handler-
-
rxCreate
public static io.reactivex.Single<RouterBuilder> rxCreate(Vertx vertx, String url)
Like- Parameters:
vertx-url-- Returns:
-
create
public static void create(Vertx vertx, String url, OpenAPILoaderOptions options, Handler<AsyncResult<RouterBuilder>> handler)
Like- Parameters:
vertx-url-options-handler-
-
create
public static void create(Vertx vertx, String url, OpenAPILoaderOptions options)
Like- Parameters:
vertx-url-options-
-
rxCreate
public static io.reactivex.Single<RouterBuilder> rxCreate(Vertx vertx, String url, OpenAPILoaderOptions options)
Like- Parameters:
vertx-url-options-- Returns:
-
securityHandler
public RouterBuilder securityHandler(String securitySchemeName, AuthenticationHandler handler)
Mount to paths that have to follow a security schema a security handler. This method will not perform any validation weather or not the givensecuritySchemeNameis present in the OpenAPI document. For must use cases the methodsecurityHandler(java.lang.String)should be used.- Parameters:
securitySchemeName- the components security scheme idhandler- the authentication handler- Returns:
- self
-
newInstance
public static RouterBuilder newInstance(RouterBuilder arg)
-
-