请求的路由尚未映射到Spark中

Ale*_*uez 6 java postgresql persistence hibernate spark-java

我想做点什么来用spark + java + hibernate + postgres注册用户

这是我的代码:

post("/registrar", (request, response) -> {
        EntityManagerFactory emf = Persistence.
         createEntityManagerFactory("compradorcitoPU");
         EntityManager em = emf.createEntityManager();em.getTransaction().begin();
         em.persist(u);
         em.getTransaction().commit();
         em.close(); return null; });
Run Code Online (Sandbox Code Playgroud)

但是这个错误出现了:

INFO spark.webserver.MatcherFilter - 请求的路径[/ registrarnull]尚未在Spark中映射

How*_*ark 9

我遇到了类似的问题.我要归还的物品很大,我想把它们写出来.所以,我的软件看起来像这样:

    post("/apiserver", "application/json", (request, response) -> {
        log.info("Received request from " + request.raw().getRemoteAddr());
        ServerHandler handler = new ServerHandler();
        return handler.handleRequest(request, response);
    });
Run Code Online (Sandbox Code Playgroud)

在我的处理程序中,我获得了原始的HttpResponse对象,打开了它的OutputStream并像这样写了:

    ObjectMapper mapper = new ObjectMapper();
    mapper.writeValue(response.raw().getOutputStream(), records);
Run Code Online (Sandbox Code Playgroud)

因为我知道我已经在OutputStream上写了调用者在那时要求的内容(或错误),我想我可以返回null.我的程序运行正常.Spark会按预期将请求路由到我的处理程序.而且,由于我正在编写原始OutputStream,因此我回到了客户端的预期.但是,我一直在服务器日志中看到消息'/ apiserver route not defined'.

在查看Spark文档时,它说:

Spark应用程序的主要构建块是一组路由.路线由三个简单的部分组成:

动词(get,post,put,delete,head,trace,connect,options)

路径(/ hello,/ users /:name)

回调(请求,响应) - > {}

显然Spark不知道你在原始的HttpResponse上写了什么,作为一个web服务器,你应该向调用者提供一些响应.因此,如果您的响应为空,则表示您尚未满足提供回调的要求,并且您会收到错误,即即使Spark按预期行为也没有找到映射.只返回一个响应(null不是响应,"200 OK"就是),错误就会消失.

[编辑]拼写和语法.


小智 5

不要“返回空值”而是返回空字符串或其他东西