JAX-RS @FormParam 一次用于所有方法
JAX-RS @FormParam one time for all methods
我正在为书籍和内容开发 Java "JAX-RS" Web 服务。将有 100 个类似的 URL ...
https://api.example.com/v1.3/book1/chapter/1
https://api.example.com/v1.3/book1/chapter/2
...
获取章节内容用户需要 POST authToken
,我在服务器中验证 return 内容或错误。示例代码 ...
@Path("/book1")
public class Book1 {
@Path("/chapter/{cNum}")
public String getMedias(
@PathParam("cNum") String cNum,
@FormParam("authToken") String authToken) {
// so here I validate the authToken
return "bla bla!";
}
}
这非常有效。但是我在上面的所有 100 种方法中都重复了 @FormParam("authToken")
。有没有一种方法可以让我在某个地方只检查一次并从所有方法中删除?非常感谢!
这将在处理之前过滤所需的参数。
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter(urlPatterns = {"/*"}, description = "Filters!")
public class MyFilter implements Filter {
private FilterConfig filterConfig;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
final String authToken = servletRequest.getParameter("authToken");
if (authToken != null) {
// and token is valid ? // etc etc ...
filterChain.doFilter(servletRequest, servletResponse);
} else {
// not valid
servletResponse.getWriter().write("No Way! No Token!");
}
}
@Override
public void destroy() {
}
}
如果您想在处理请求之前检查安全令牌或数据库连接或日志 URL,这很有用。
我正在为书籍和内容开发 Java "JAX-RS" Web 服务。将有 100 个类似的 URL ...
https://api.example.com/v1.3/book1/chapter/1
https://api.example.com/v1.3/book1/chapter/2
...
获取章节内容用户需要 POST authToken
,我在服务器中验证 return 内容或错误。示例代码 ...
@Path("/book1")
public class Book1 {
@Path("/chapter/{cNum}")
public String getMedias(
@PathParam("cNum") String cNum,
@FormParam("authToken") String authToken) {
// so here I validate the authToken
return "bla bla!";
}
}
这非常有效。但是我在上面的所有 100 种方法中都重复了 @FormParam("authToken")
。有没有一种方法可以让我在某个地方只检查一次并从所有方法中删除?非常感谢!
这将在处理之前过滤所需的参数。
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter(urlPatterns = {"/*"}, description = "Filters!")
public class MyFilter implements Filter {
private FilterConfig filterConfig;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
final String authToken = servletRequest.getParameter("authToken");
if (authToken != null) {
// and token is valid ? // etc etc ...
filterChain.doFilter(servletRequest, servletResponse);
} else {
// not valid
servletResponse.getWriter().write("No Way! No Token!");
}
}
@Override
public void destroy() {
}
}
如果您想在处理请求之前检查安全令牌或数据库连接或日志 URL,这很有用。