use of io.vertx.ext.web.Route in project mbed-cloud-sdk-java by ARMmbed.
the class TestServer method defineResetRoute.
private void defineResetRoute() {
Route route = router.route(HttpMethod.POST, "/reset").produces(APPLICATION_JSON);
route.blockingHandler(routingContext -> {
execute(205, routingContext, new ServerAction() {
@Override
public Object execute() throws Exception {
engine.reset();
return null;
}
}, false);
});
}
use of io.vertx.ext.web.Route in project mbed-cloud-sdk-java by ARMmbed.
the class TestServer method defineListInstanceMethodsRoute.
private void defineListInstanceMethodsRoute() {
Route route = router.route(HttpMethod.GET, "/instances/:" + PARAM_INSTANCE + "/methods").produces(APPLICATION_JSON);
route.blockingHandler(routingContext -> {
String instanceId = routingContext.request().getParam(PARAM_INSTANCE);
execute(200, routingContext, new ServerAction() {
@Override
public Object execute() throws Exception {
return engine.listInstanceMethods(instanceId).stream().map(m -> m.toSdkApi()).collect(Collectors.toList());
}
}, false);
});
}
use of io.vertx.ext.web.Route in project vertx-swagger by bobxwang.
the class RestApiVerticle method configRoute.
private void configRoute(final Router router) {
router.get("/logout").handler(context -> {
context.clearUser();
context.response().setStatusCode(302).putHeader("Location", "/").end();
});
AuthProvider authProvider = ChainAuth.create();
AuthHandler basicAuthHandler = BasicAuthHandler.create(authProvider);
router.route("/private/*").handler(basicAuthHandler);
Route route = router.route(HttpMethod.GET, "/private/path/");
route.handler(ctx -> ctx.response().end(new JsonObject().put("rs", new Date().toString()).encodePrettily()));
router.route(HttpMethod.GET, "/some/path/").handler(routingContext -> {
HttpServerResponse response = routingContext.response();
// 由于我们会在不同的处理器里写入响应,因此需要启用分块传输,仅当需要通过多个处理器输出响应时才需要
response.setChunked(true);
response.write("route1\n");
// 1 秒后调用下一个处理器
routingContext.vertx().setTimer(1000, tid -> routingContext.next());
});
router.route(HttpMethod.GET, "/some/path/").handler(routingContext -> {
HttpServerResponse response = routingContext.response();
response.write("route2\n");
// 1 秒后调用下一个处理器
routingContext.vertx().setTimer(1000, tid -> routingContext.next());
});
router.route(HttpMethod.GET, "/some/path/").handler(routingContext -> {
HttpServerResponse response = routingContext.response();
response.write("route3");
// 结束响应
routingContext.response().end();
});
router.route(HttpMethod.GET, "/long/time").blockingHandler(ctx -> {
// call other service maybe long time, so here we using block pattern
try {
Thread.sleep(5000l);
} catch (InterruptedException e) {
e.printStackTrace();
}
ctx.response().end(new JsonObject().put("rs", new Date().toString()).encodePrettily());
});
// 如果您需要在一个阻塞处理器中处理一个 multipart 类型的表单数据,您需要首先使用一个非阻塞的处理器来调用 setExpectMultipart(true)
router.post("/some/longtime/endpoint").handler(ctx -> {
ctx.request().setExpectMultipart(true);
ctx.next();
}).blockingHandler(ctx -> {
// 执行某些阻塞操作
});
}
use of io.vertx.ext.web.Route in project vertx-web by vert-x3.
the class OpenAPI3RouterFactoryImpl method getRouter.
@Override
public Router getRouter() {
Router router = Router.router(vertx);
router.route().handler(options.getBodyHandler());
List<Handler<RoutingContext>> globalSecurityHandlers = securityHandlers.solveSecurityHandlers(spec.getSecurity(), this.getOptions().isRequireSecurityHandlers());
for (OperationValue operation : operations.values()) {
// If user don't want 501 handlers and the operation is not configured, skip it
if (!options.isMountNotImplementedHandler() && !operation.isConfigured())
continue;
List<Handler> handlersToLoad = new ArrayList<>();
List<Handler> failureHandlersToLoad = new ArrayList<>();
// Resolve security handlers
handlersToLoad.addAll(globalSecurityHandlers);
handlersToLoad.addAll(securityHandlers.solveSecurityHandlers(operation.getOperationModel().getSecurity(), this.getOptions().isRequireSecurityHandlers()));
// Generate ValidationHandler
Handler<RoutingContext> validationHandler = new OpenAPI3RequestValidationHandlerImpl(operation.getOperationModel(), operation.getParameters(), this.spec);
handlersToLoad.add(validationHandler);
// Check validation failure handler
if (this.options.isMountValidationFailureHandler())
failureHandlersToLoad.add(this.options.getValidationFailureHandler());
// Check if path is set by user
if (operation.isConfigured()) {
handlersToLoad.addAll(operation.getUserHandlers());
failureHandlersToLoad.addAll(operation.getUserFailureHandlers());
} else {
handlersToLoad.add(this.options.getNotImplementedFailureHandler());
}
// Now add all handlers to route
OpenAPI3PathResolver pathResolver = new OpenAPI3PathResolver(operation.getPath(), operation.getParameters());
Route route = router.routeWithRegex(operation.getMethod(), pathResolver.solve().toString());
// Set produces/consumes
Set<String> consumes = new HashSet<>();
Set<String> produces = new HashSet<>();
if (operation.getOperationModel().getRequestBody() != null && operation.getOperationModel().getRequestBody().getContent() != null)
consumes.addAll(operation.getOperationModel().getRequestBody().getContent().keySet());
if (operation.getOperationModel().getResponses() != null)
for (ApiResponse response : operation.getOperationModel().getResponses().values()) if (response.getContent() != null)
produces.addAll(response.getContent().keySet());
for (String ct : consumes) route.consumes(ct);
for (String ct : produces) route.produces(ct);
if (options.isMountResponseContentTypeHandler() && produces.size() != 0)
route.handler(ResponseContentTypeHandler.create());
route.setRegexGroupsNames(new ArrayList<>(pathResolver.getMappedGroups().values()));
for (Handler handler : handlersToLoad) route.handler(handler);
for (Handler failureHandler : failureHandlersToLoad) route.failureHandler(failureHandler);
}
return router;
}
use of io.vertx.ext.web.Route in project vertx-web by vert-x3.
the class TemplateHandlerImplTest method testSetIndex.
@Test
public void testSetIndex() {
TemplateEngine templateEngine = mock(TemplateEngine.class);
RoutingContext routingContext = mock(RoutingContext.class);
when(routingContext.normalisedPath()).thenReturn("/");
Route currentRoute = mock(Route.class);
when(currentRoute.getPath()).thenReturn("/");
when(routingContext.currentRoute()).thenReturn(currentRoute);
TemplateHandler templateHandler = new TemplateHandlerImpl(templateEngine, "templates", "ext");
templateHandler.setIndexTemplate("home");
templateHandler.handle(routingContext);
verify(templateEngine).render(any(), eq("templates"), eq("/home"), any());
}
Aggregations