Я новичок в Vert.x, но, как разработчик Java (умираю), я нахожу его гораздо более приятным и многообещающим по сравнению с NodeJS или чем-то еще — основанными на Reactor средами / библиотеками. Поэтому я собирался реализовать очень простой Restful API, используя Vert.x.
Моя проблема на сегодня заключается в том, что я хотел включить некоторые определенные HttpHeaders в большинство (все) моих ответов. Например, установите тип контента «application / json». В будущем возможно добавлю еще несколько.
Я был как новичок в Vert.x, а потом понял, что то, что в конечном итоге было предложено в этом посте (см. Использование BodyHandler ), действительно сработает для меня.
Итак, у меня было основное Java-приложение VertxMain , в котором я регистрировал MyWebVerticleApp .
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
|
package com.javapapo.vertxweb;import io.vertx.core.Vertx;import io.vertx.core.VertxOptions;/** * Created by <a href="mailto:javapapo@mac.com">javapapo</a> on 15/11/15. */public class VertxEngineMain { public static void main(String[] args) { VertxOptions opts = new VertxOptions(); Vertx vertx = Vertx.vertx(opts); vertx.deployVerticle(new MyWebVerticleApp()); }} |
Затем я создал небольшой обработчик, я называю его BaseResponseHandler , который в конечном итоге добавляет HttpHeader в мои ответы.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
package com.javapapo.vertxweb.handlers;import io.netty.handler.codec.http.HttpResponse;import io.vertx.core.Handler;import io.vertx.core.http.HttpHeaders;import io.vertx.core.http.HttpServerRequest;import io.vertx.core.http.HttpServerResponse;import io.vertx.ext.web.RoutingContext;/** * Created by <a href="mailto:javapapo@mac.com">javapapo</a> on 27/11/15. */public class BaseResponseHandler implements Handler<RoutingContext>{ @Override public void handle(RoutingContext context) { HttpServerResponse response = context.response(); response.putHeader(HttpHeaders.CONTENT_TYPE.toString(), "application/json"); //other stuff! response.setChunked(true); context.next(); }} |
Затем в моем MyWebVerticle я просто регистрирую обработчик, который будет вызываться все время, в MyWebVerticle маршрутизатора.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
package com.javapapo.vertxweb;import com.javapapo.vertxweb.handlers.BaseResponseHandler;import com.javapapo.vertxweb.handlers.StatusHandler;import io.vertx.core.AbstractVerticle;import io.vertx.core.Future;import io.vertx.core.http.HttpServer;import io.vertx.core.http.HttpServerResponse;import io.vertx.ext.web.Route;import io.vertx.ext.web.Router;import io.vertx.ext.web.handler.BodyHandler;/** * Created by <a href="mailto:javapapo@mac.com">javapapo</a> on 16/11/15. */public class MyWebVerticleApp extends AbstractVerticle { @Override public void start(Future<Void> fut) { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); //enable the base response handler overall! router.route().handler(new BaseResponseHandler()); router.route("/status/").handler(new StatusHandler()); server.requestHandler(router::accept).listen(8080); }} |
| Ссылка: | Задание базовых HTTP-заголовков ответов для ресурсов REST в простом приложении на основе Vertx Rest от нашего партнера по JCG Париса Апостолопулоса из блога журнала Papo . |