Tôi đang viết một API REST, sử dụng RestEasy 2.3.4.Final. Tôi biết rằng một Interceptor sẽ chặn tất cả các yêu cầu của tôi, và rằng một PreProcessInterceptor sẽ là người đầu tiên (trước khi mọi thứ) được gọi. Tôi muốn biết làm thế nào tôi có thể làm cho Interceptor này được gọi khi các phương thức cụ thể được gọi.Làm thế nào để sử dụng RESTEasy PreProcessInterceptor chỉ trong các phương pháp cụ thể?
Tôi đã cố gắng sử dụng cả PreProcessInterceptor và AcceptedByMethod, nhưng tôi không thể đọc các tham số tôi cần. Ví dụ, tôi cần phải chạy Interceptor của tôi chỉ khi phương pháp này được gọi là:
@GET
@Produces("application/json;charset=UTF8")
@Interceptors(MyInterceptor.class)
public List<City> listByName(@QueryParam("name") String name) {...}
Để cụ thể hơn, tôi cần phải chạy Interceptor của tôi trong tất cả các phương pháp mà có một @QueryParam("name")
trên chữ ký của mình, để tôi có thể lấy tên và làm điều gì đó trước mọi thứ.
Có thể không? Tôi đã cố gắng nắm bắt thông số "tên" bên trong Interceptor, nhưng tôi không thể làm điều đó.
Ai đó có thể giúp tôi không?
Thankyou @eiden. Tôi đã thử điều này trước đây, nhưng không sử dụng '@ Context'. Nhưng, khi tôi cố gắng lấy một số dữ liệu từ ngữ cảnh được tiêm, nó ném ra một ngoại lệ vì ngữ cảnh không được khởi tạo, tôi đoán vậy. org.apache.catalina.core.ContainerBase. [Jboss.web]. [Máy chủ lưu trữ mặc định]. [/ Api]] (Chuỗi dịch vụ MSC 1-3) Ngoại lệ gửi sự kiện khởi tạo bối cảnh đến thể hiện trình nghe của lớp org.jboss .resteasy.plugins.server.servlet.ResteasyBootstrap: org.jboss.resteasy.spi.LoggableFailure: Không thể tìm thấy dữ liệu theo ngữ cảnh của kiểu: javax.servlet.http.HttpServletRequest – pulu
Tôi không biết tại sao bạn đang sử dụng @Context? Dù sao, tôi đã cập nhật câu trả lời của tôi với một ví dụ mã số – eiden
Excelent @eiden. Tôi gần như đã nhận nó làm việc theo cách đó, nhưng tôi đã không nhận ra chú thích 'if (chú thích.annotationType() == QueryParam.class) { QueryParam queryParam = (QueryParam); trả về truy vấnParam.value(). Bằng ("name"); ' Rất cám ơn vì đã giúp tôi! Và tôi hy vọng nó sẽ giúp nhiều người hơn. – pulu