Java 其余返回Vaadin';将HTML替换为字符串

Java 其余返回Vaadin';将HTML替换为字符串,java,rest,vaadin,Java,Rest,Vaadin,我正在尝试将REST集成到我的Vaadin 8应用程序中。我得到的是来自客户端请求的Vaadin HTML响应,而不是字符串。我通过Maven使用jetty:run。问题是什么 客户端: Client client = ClientBuilder.newClient(); WebTarget target = client.target("http://localhost:8080/api/rest/hello"); Response resp

我正在尝试将REST集成到我的Vaadin 8应用程序中。我得到的是来自客户端请求的Vaadin HTML响应,而不是字符串。我通过Maven使用
jetty:run
。问题是什么

客户端:

Client client = ClientBuilder.newClient();
        WebTarget target = client.target("http://localhost:8080/api/rest/hello");
        Response response = target.request().get();
        String value = response.readEntity(String.class);
        System.out.println("Response: " + value);
 @WebServlet(urlPatterns = {"/api/*", "/VAADIN/*"}, asyncSupported = true)
        @VaadinServletConfiguration(closeIdleSessions = true, ui = ApiUI.class, productionMode = false)
        public static class ApiUIServlet extends VaadinServlet { ...
UI类:

Client client = ClientBuilder.newClient();
        WebTarget target = client.target("http://localhost:8080/api/rest/hello");
        Response response = target.request().get();
        String value = response.readEntity(String.class);
        System.out.println("Response: " + value);
 @WebServlet(urlPatterns = {"/api/*", "/VAADIN/*"}, asyncSupported = true)
        @VaadinServletConfiguration(closeIdleSessions = true, ui = ApiUI.class, productionMode = false)
        public static class ApiUIServlet extends VaadinServlet { ...

Stackoverflow不允许我发布更多代码。以下是附加类:

Here
@WebServlet(urlPatterns={/api/*”,“/VAADIN/*”},asyncSupported=true)
看起来您正在将VaadinServlet配置为URL
/api/*
,这意味着VAADIN servlet将接管所有到达localhost:8080/api的请求,无论它们来自浏览器还是REST请求。相反,您应该将VaadinServlet配置为例如
/ui/*
,并对REST请求使用
/api/*
。@ollitietavainen感谢您的回复。那么我的代码应该是这个吗
@WebServlet(urlPatterns={/ui/*”,“/api/*”},asyncSupported=true)
否,您应该仅在您的VaadinServlet上具有“/ui/*”和“/VAADIN/*”url模式。“/api/*”不应由VaadinServlet处理,VaadinServlet应仅为Vaadin UI服务。让另一个非Vaadin servlet处理“/api/*”@ollitietavainen谢谢!在你的指导下,我自己花了一些时间来解决这个问题。我现在使用了一个httpservlet和
doPost
方法来处理我的api。但是有一个问题,如果我想为不同的
POST
调用使用不同的api端点,那么我会为每个调用使用单独的servlet吗?像
@WebServlet(“/api/p1”)
@WebServlet(“/api/p2”)
?再次感谢。我认为您可以拥有一个“RESTAPI”servlet,该servlet具有到不同端点的不同URL映射。对端点进行版本控制是个好主意;看看