我正在考虑将Vaadin 12用于前端开发(我们主要是纯Java工程师,并且我希望将代码大部分保留在Java中)。但是,我们可能还需要支持Web服务。如果我们不使用Vaadin,我们将只使用Jersey&DropWizard,创建Web服务非常简单。
但是在Vaadin 12 中,我可以使用最少的附加代码/黑客来创建Web服务吗? (我在Vaadin 8中看到了如何执行此操作的示例,但Vaadin 10和12与我阅读的内容有本质上的区别。)特别是,有人可以指出我在Vaadin 12中如何执行此操作的示例代码/示例吗?
(在相关说明中:这是一个“坏”主意,我应该为我的一个或两个Web服务实现一个单独的系统(使用DropWizard中的Jersey)吗?...我宁愿不必支持一个整个新服务器/实例等仅用于几个Web服务,而我的逻辑中的99%可能在Vaadin系统中。)
答案 0 :(得分:5)
从这个意义上说,Vaadin 8和Vaadin 10+完全相同。如果您想公开例如REST服务,除了Vaadin UI外,只需将REST API公开到另一个URL。例如。如果根(“ /”)映射到Vaadin,则从“ / api”提供服务。您可以使用两个单独的Web应用程序(war文件)或通过将Vaadin UI和API映射到不同的地址来完成此操作。
下面是一个非常简单的JAX-RS应用程序,它可以很好地部署在Vaadin应用程序旁边(也可以部署到Vaadin 10+,使用Wildfly测试):
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Application;
@ApplicationPath("/api")
public class RestStuff extends Application {
@Path("/")
public static class HelloWorld {
@GET
@Produces("text/plain")
public String getMessage() {
return "Hello World";
}
}
}
答案 1 :(得分:0)
@mstahv我终于得到它了。我的错误是没有使用正确的球衣库。最后,以下库对我有用:
let hashsum = require("gulp-hashsum");
function getHash() {
gulp.src(["www/main*.js"]).pipe(hashsum({
stream: true,
json: true
}
)).pipe(gulp.dest(
// How to replace ngsw.json 'hashTable' entry with this response? ));
}
谢谢!