#java #rest #helidon
#java #остальное #helidon
Вопрос:
Я новичок в Helidon SE и хотел бы знать, есть ли способ реализовать q параметров в службе REST, созданной через Helidon SE. Любая помощь в этом отношении действительно ценится.
Спасибо, Гаурав
Ответ №1:
Если вы хотите использовать и читать параметры следующим образом, например
http://localhost:8080/?q=testamp;k=test2
Затем — в случае Helidon SE — выполните следующие действия, чтобы получить эти параметры:
private void getParam(ServerRequest request, ServerResponse response) {
Map params = request.queryParams().toMap();
logger.info("params: " params);
logger.info("q: " params.get("q"));
logger.info("k: " params.get("k"));
...
}
Очевидно getParam
, что метод настроен для пути «/».
Ответ №2:
Как мне получить параметры запроса в приложении Helidon SE: вот один пример,
HelloService.java
public class HelloService implements Service {
private static final JsonBuilderFactory JSON = Json.createBuilderFactory(Collections.emptyMap());
HelloService(Config config) {
}
@Override
public void update(Rules rules) {
rules.get("/", this::getDefaultMessageHandler);
}
private void getDefaultMessageHandler(ServerRequest request, ServerResponse response) {
var params = request.queryParams().toMap();
System.out.println("name: " params.get("name").get(0));
System.out.println("email: " params.get("email").get(0));
sendResponse(response, params.get("name").get(0));
}
private void sendResponse(ServerResponse response, String name) {
var returnObject = JSON.createObjectBuilder().add("name", name).build();
response.send(returnObject);
}
}
Главная
public class HelidonSeRestHelloWorldApplication {
public static void main(final String[] args) {
startServer();
}
private static Single<WebServer> startServer() {
var config = Config.create();
var server = WebServer.builder(createRouting(config)).config(config.get("server"))
.addMediaSupport(JsonpSupport.create()).build();
var webserver = server.start();
webserver.thenAccept(ws -> {
System.out.println("Web server started! http://localhost:" ws.port() "/hello");
ws.whenShutdown().thenRun(() -> System.out.println("Web server is down!"));
}).exceptionallyAccept(t -> {
System.out.println("Web startup failed: " t.getMessage());
});
return webserver;
}
private static Routing createRouting(Config config) {
var helloService = new HelloService(config);
return Routing.builder()
.register("/hello", helloService).build();
}
}
application.properties
server.port=9080
Запустите приложение и нажмите http://localhost:9080/hello?name=alphaamp;email=alpha@alpha.alpha
Вывод на консоль:
name: alpha
email: alpha@alpha.alpha
Как мне получить параметры пути в приложении Helidon SE:
Главная
public class HelidonSeRestHelloWorldApplication {
...........................
...........................
private static Routing createRouting(Config config) {
var helloService = new HelloService(config);
return Routing.builder()
.register("/hello/{name}", helloService).build();
}
}
HelloService.java
public class HelloService implements Service {
............
...........
private void getDefaultMessageHandler(ServerRequest request, ServerResponse response) {
var name = request.path().absolute().param("name");
System.out.println(name);
sendResponse(response, name);
}
.................
.................
}
Запустите приложение и нажмите: http://localhost:9080/hello/alpha