如何使用vertx解析查询参数?

时间:2016-10-14 05:15:22

标签: java rest vert.x

我想检查一下是否可以使用getparam从下面的请求URL解析start_time和end_time

https://[--hostname--]/sample_app/apthroughput/getAllControllers?start_time=<start time value>&end_time=<end time value>&label=<selected label>

5 个答案:

答案 0 :(得分:3)

查询字符串的解析非常简单,除了同一查询参数有多个值时。

       <FloatingActionButton style={{height: 21, width: 21}} iconStyle={{height: 21, width: 21}}>
         <SwapVert />
  </FloatingActionButton>

在这种情况下,下面的代码有助于获取e.g.: https://[--hostname--]/sample_app/apthroughput/getAllControllers?type=xxx&type=yyy

中的所有此类参数

answer提供了一个想法。从中复制:

List<String>

答案 1 :(得分:1)

您可以获取参数String表示,但您需要自己转换该值。

答案 2 :(得分:1)

以下是一个例子:

public static void main(String[] args) {

    Vertx vertx = Vertx.vertx();

    HttpServer server = vertx.createHttpServer();

    server.requestHandler(request -> {

        String startTime = request.getParam("start_time");
        String endTime = request.getParam("end_time");

        // This handler gets called for each request that arrives on the server
        HttpServerResponse response = request.response();
        response.putHeader("content-type", "text/plain");

        // Write to the response and end it
        response.end(String.format("Got start time %s, end time %s", startTime, endTime));
    });

    server.listen(8888);
}

打开http://localhost:8888/?start_time=20161014&end_time=20161015查看结果。

答案 3 :(得分:0)

我知道这是(有点)较晚的响应,但是在Vert.X 3.9中,要获取 start_time end_time 参数,您可以通过以下方式获取它们:

public void getAllControllersHandler(RoutingContext context) {
   Mutlimap parameters = context.request().params();
   String start_time = parameters.get("start_time");
   String end_time = parameters.get("end_time");
   // now do what you need to with retrieved values :)
}

此外,当端点将其传递到 Route get()时必须看起来像这样(我假设您正在使用HTTP Get方法):

Router router = Router.router(vertx);
router.get("/sample_app/apthroughput/getAllControllers").handler(this::getAllControllersHandler);

希望有帮助。

建议。如果这可以解决问题,请将其标记为可接受的答案。

答案 4 :(得分:0)

@OrkunOzen 的回答很好,但 MultiMap 使用不区分大小写的键。

为了更精确的控制,你可以深入代码找到从 HttpServerRequest.params() 调用的这个 util 函数 -> io.vertx.core.http.impl.HttpUtils.params(String uri)

此代码将让您完全控制:

QueryStringDecoder queryStringDecoder = new QueryStringDecoder(uri);
Map<String, List<String>> prms = queryStringDecoder.parameters();