[英]JAX-RS @FormParam one time for all methods
我正在開發用於書籍和內容的Java“ JAX-RS” Web服務。 將會有100多個類似的網址...
https://api.example.com/v1.3/book1/chapter/1
https://api.example.com/v1.3/book1/chapter/2
...
要獲取章節內容用戶需要POST authToken
,我在服務器中進行了驗證並返回內容或錯誤。 示例代碼...
@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,這將很有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.