我正在向我的Web应用程序添加REST API。所有REST地址都在../ rest / ...我想要做的是当客户端尝试调用不存在的地址时返回JSON:{error:not found}消息。例如:
../rest/users - 好的
../rest/xxxx - 返回{error:not found}其中xxxx可以是任何字符串。
现在调用../rest/xxxx glassfish处理请求并返回html错误页面。
有没有办法禁止glassfish返回特定地址的html错误页面(../rest/ ..),并将所有不存在的url映射到将返回以JSON格式化的错误的方法。
答案 0 :(得分:1)
在我开发的应用程序中,我有两个页面层次结构;返回HTML(和HTML错误消息)以及返回JSON(和JSON错误消息)的那些。
这种技术在这里可能有所帮助。
答案 1 :(得分:1)
您是否可以编写一个拦截所有请求的过滤器,并为不遵循/ rest / url模式的网址返回json响应?
例如,使用Jersey休息服务,您将拥有这样的映射
<servlet-mapping>
<servlet-name>Jersey Rest Servlet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
您可以添加带有映射的过滤器
<filter-mapping>
<filter-name>RestFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
然后在过滤器的doFilter方法
中public void doFilter(...){
if(match using a regex pattern){
chain.doFilter(request, response); //matches, send it to servlet
}else{
response.setContentType("application/json"); //no match, send an erro
response.println("{error:'value'}");
}
}
您可能需要调整过滤器模式以允许图像和此类内容,但这会让您有机会开始使用。