Я новичок в 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:[email protected]">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:[email protected]">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:[email protected]">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 . |