2017-06-10 23 views
5

Tôi đã lọc qua đó POST REST api đi cùng và tôi muốn trích xuất phần dưới đây của tải trọng của tôi trong bộ lọc.Cách lấy tải trọng của REST api bằng cách sử dụng ContainerRequestContext trong phương thức lọc

{ 
     "foo": "bar", 
     "hello": "world" 
} 

đang Lọc: -

public class PostContextFilter implements ContainerRequestFilter { 
    @Override 
    public void filter(ContainerRequestContext requestContext) 
      throws IOException { 
     String transactionId = requestContext.getHeaderString("id"); 
    // Here how to get the key value corresponding to the foo. 
     String fooKeyVal = requestContext. ?? 
    } 
} 

Tôi không thấy bất kỳ phương pháp dễ dàng để có được tải trọng đến api sử dụng các đối tượng ContainerRequestContext.

Vì vậy, câu hỏi của tôi là làm thế nào để tôi nhận được giá trị khóa tương ứng với khóa foo trong tải trọng của tôi.

Trả lời

4

Trong khi các bộ lọc chủ yếu nhằm điều khiển các thông số yêu cầu và phản ứng như tiêu đề HTTP, URI và/hoặc các phương pháp HTTP, máy bay đánh chặn được mục đích thao túng các tổ chức, thông qua thao tác dòng đầu vào thực thể/đầu ra.

Một ReaderInterceptor cho phép bạn thao tác inbound suối tổ chức nào, có nghĩa là, các con suối đến từ các "dây". Sử dụng Jackson để phân tích dòng thực thể trong nước, đánh chặn của bạn có thể như:

@Provider 
public class CustomReaderInterceptor implements ReaderInterceptor { 

    // Create a Jackson ObjectMapper instance (it can be injected instead) 
    private ObjectMapper mapper = new ObjectMapper(); 

    @Override 
    public Object aroundReadFrom(ReaderInterceptorContext context) 
         throws IOException, WebApplicationException { 

     // Parse the request entity into the Jackson tree model 
     JsonNode tree = mapper.readTree(context.getInputStream()); 

     // Extract the values you need from the tree 

     // Proceed to the next interceptor in the chain 
     return context.proceed(); 
    } 
} 

này answeranswer này cũng có thể liên quan đến câu hỏi của bạn.

Các vấn đề liên quan