Tôi muốn tùy chỉnh phản hồi 404, máy chủ (không phải tôi) ném bất cứ khi nào nó không thể tìm thấy tài nguyên được yêu cầu, hoặc ném WebApplicationException tùy chỉnh bản thân mình, nếu có thể kiểm tra xem một tài nguyên được yêu cầu có xuất hiện trong một ứng dụng không? có lẽ một Danh sách các tài nguyên được lưu trữ ở đâu đó?). xin vui lòng không giới thiệu cho tôi các giải pháp đề xuất mở rộng WebApplicationException, bởi vì ngay cả khi làm như vậy, vấn đề của tôi là khi nào để ném nó ?, khi tài nguyên không được tìm thấy! nhưng làm thế nào để thể hiện nhu cầu này trong khung áo dàiNơi để ném lỗi 404 tùy chỉnh trong áo khi HttpServer không thể tìm thấy tài nguyên
Trả lời
Jersey throwsjavax.ws.rs.NotFoundException
khi không tìm thấy điểm cuối. Chỉ cần sử dụng trình lập bản đồ ngoại lệ để chuyển đổi thành phản hồi theo lựa chọn của bạn:
import javax.ws.rs.NotFoundException;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
@Provider
public class NotFoundExceptionMapper implements ExceptionMapper<NotFoundException> {
public Response toResponse(NotFoundException exception) {
return Response.status(Response.Status.NOT_FOUND)
.entity("No such resource")
.build();
}
}
thank's nhưng không may sau khi thêm mã của bạn, vào cùng một gói mà lớp chính của tôi cư trú và chạy 'curl -g -i http: // localhost: 8080/base/@@@ 11' Tôi nhận được 404 không có nội dung, như xa như tôi biết '@ Provider' là ở đây để nói với máy chủ này là lớp để ném khi một nguồn tài nguyên không được tìm thấy, là điều này phải không? sau đó làm thế nào để làm cho nó hoạt động ?! –
Tôi không nghĩ mình cần đăng ký ở đâu đó, đúng không? –
Nếu bạn đã định cấu hình quét gói và bạn đã đặt nhà cung cấp trong gói được chỉ định thì nó sẽ hoạt động. Có một số loại nhà cung cấp trong JAX-RS (xem thêm: http://stackoverflow.com/questions/13557442/what-does-provider-in-jax-rs-mean). ExceptionMappers cho phép bạn nắm bắt bất kỳ ngoại lệ nào bạn muốn xử lý và tạo ra một phản hồi tùy chỉnh. Trong trường hợp này, chúng tôi đang xử lý NotFoundException vì nó bị máy chủ ném ra khi không tìm thấy tài nguyên phù hợp. –
- 1. Trả lại lỗi 404 tùy chỉnh khi tài nguyên không tìm thấy trong Django Rest Framework
- 2. Web API 2.2 trả lại 404 tùy chỉnh khi tài nguyên (url) không được tìm thấy
- 3. video.js.map ném 404 (Không tìm thấy)
- 4. RestClient :: ResourceNotFound (404 tài nguyên không tìm thấy):
- 5. tài sản heroku không tìm thấy 404
- 6. tài nguyên trong META-INF/tài nguyên không tìm thấy và trả lại 404
- 7. Có đúng không khi trả về 404 khi không tìm thấy tài nguyên REST?
- 8. Đặt switchStyle - không tìm thấy tài nguyên lỗi - tại sao?
- 9. Solr không thể tìm thấy tài nguyên stopwords_en.txt
- 10. Lỗi Django 404 tùy chỉnh
- 11. django-haystack: Không thể thêm tài liệu vào Solr: [Lý do: Lỗi 404 Không tìm thấy]
- 12. Spring Boot Rest - Cách cấu hình 404 - không tìm thấy tài nguyên
- 13. Sphinx4 không tìm thấy tài nguyên
- 14. Vận tốc không thể tìm thấy tài nguyên
- 15. Tài nguyên có thể rút không tìm thấy
- 16. Không tìm thấy tài nguyên khi sử dụng kiểu Theme.Sherlock
- 17. Android, không tìm thấy tài nguyên chuỗi
- 18. Không thể tải tài nguyên: máy chủ phản hồi với trạng thái 404 (Không tìm thấy) ripple.js
- 19. layout_above của RelativeLayout cho lỗi "Không tìm thấy tài nguyên"
- 20. ASP.NET MVC Tuỳ chỉnh trang Lỗi (StatusCode 404 ném 500)
- 21. Cách xử lý lỗi không tìm thấy 404 trong Nokogiri
- 22. lỗi tài nguyên toàn cầu asp.net 'Không tìm thấy đối tượng tài nguyên có khóa' '
- 23. Theme.AppCompat.Light.DarkActionBar - Không tìm thấy tài nguyên
- 24. Tài nguyên không tìm thấy TextView
- 25. jquery datetimepicker không tìm thấy lỗi 404 (.png files)
- 26. WPF UserControl không thể tìm thấy tài nguyên XAML khi tham chiếu dự án
- 27. Lỗi "Không tìm thấy tài nguyên" khi truy cập elmah.axd trong dự án ASP.NET MVC
- 28. android.content.res.Resources $ NotFoundException: Không thể tìm thấy ID tài nguyên # 0xffffffff
- 29. Cuộc gọi JQuery Ajax cho lỗi 404 'Không tìm thấy tài nguyên' nhưng lệnh gọi URL thông thường là Fine
- 30. lệnh tùy chỉnh django không tìm thấy
Bạn đã thử gì cho đến thời điểm này? 'ExceptionMapper' có thể hữu ích ... – zyexal
Bạn sử dụng verion Jersey nào? –
nó được cho là Jersey 2.x, với grizzly-http-server 2.3.0, tôi đang thử các ví dụ ở đây [link] (https://github.com/jersey/jersey/tree/master/examples) –