簡體   English   中英

JAX-RS @FormParam所有方法一次

[英]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

...

https://api.example.com/v1.3/book1/chapterN

要獲取章節內容用戶需要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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM