Routes sparkjava路由冲突:静态文件和默认异常处理程序

Routes sparkjava路由冲突:静态文件和默认异常处理程序,routes,spark-java,Routes,Spark Java,我有一个json Web服务,我只想返回json。现在,当用户请求一个不存在的资源时,他们会从sparkjava引擎得到一个HTML404响应 我尝试返回404 json响应,如下所示: 使用sparkjava,我初始化静态文件 externalStaticFileLocation(“/my/static/file/path”) 我设置了我的应用程序端点 我最后设置的端点是404处理程序。基本上,如果URL与上面的1或2不匹配,那么假设404也是这样: get("/*", BaseWebApp:

我有一个json Web服务,我只想返回json。现在,当用户请求一个不存在的资源时,他们会从sparkjava引擎得到一个HTML404响应

我尝试返回404 json响应,如下所示:

  • 使用sparkjava,我初始化静态文件

    externalStaticFileLocation(“/my/static/file/path”)

  • 我设置了我的应用程序端点

  • 我最后设置的端点是404处理程序。基本上,如果URL与上面的1或2不匹配,那么假设404也是这样:

    get("/*", BaseWebApp::notFound, new JsonTransformer());
    put("/*", BaseWebApp::notFound, new JsonTransformer());
    post("/*", BaseWebApp::notFound, new JsonTransformer());
    delete("/*", BaseWebApp::notFound, new JsonTransformer()); 
    
  • 这是行不通的。当我请求一个静态文件时,我会得到json 404响应。sparkjava文档说明:

    Routes are matched in the order they are defined. The first route that 
    matches the request is invoked.
    

    我会认为,因为我在404端点之前初始化了静态文件,所以不会得到404响应。此问题类似,但遗憾的是没有得到回答:

    你为什么要宣布这样一条路线?只有当它是一个before/after过滤器时,它才有意义。

    我的web应用程序提供静态html文件,并且还具有json webservice端点。我将名称空间分隔开,以便所有json Web服务都以“v1”作为前缀。现在,我的json 404匹配“/v1/*”。当他们试图请求一个不存在的json端点时,我得到了一个json 404。否则,应用程序将返回HTML404


    这比我原来拥有的要好,因为有些情况下我应该返回HTML404。

    我有一个json web服务。现在,如果用户点击404,就会得到一个由sparkjava自动生成的HTML响应。这将破坏我服务的客户。我确信还有其他合法的用例……好的,我明白了。在这种情况下,我认为before过滤器可以做到这一点。如果客户端访问了无效路由,您可以暂停(404)并将所需内容放入响应正文中。我不理解您的评论。你能发布一个工作代码示例吗?好的,我现在不能做,但我会尽快做。我尝试了我告诉过你的方法,但没有成功。希望有人会做这件事。我也会很感激的。