Tôi có một dịch vụ web được viết bằng Spring MVC. Nó có thể được sử dụng bởi các nhà phát triển bên thứ 3. Phương pháp của chúng tôi có rất nhiều thông số tùy chọn (được chuyển trong chuỗi truy vấn).Spring MVC - Cách kiểm tra xem không có tham số chuỗi truy vấn không mong muốn nào đã được chuyển?
Tôi muốn đảm bảo rằng tất cả thông số chuỗi truy vấn được viết đúng chính tả và không có lỗi chính tả. Có cách nào dễ dàng để làm điều đó không? Ví dụ phương pháp chữ ký:
@RequestMapping(value = {"/filter"}, method = RequestMethod.GET)
@ResponseBody
public List<MetricType> getMetricTypes(
@RequestParam(value = "subject", required = false) Long subjectId,
@RequestParam(value = "area", required = false) Long areaId,
@RequestParam(value = "onlyImmediateChildren", required = false) Boolean onlyImmediateChildren,
@RequestParam(value = "componentGroup", required = false) Long componentGroupId
) throws Exception
{
//Some code
}
Nếu ai đó gọi phương pháp này với "onlyImediateChildren = true" tham số (một lỗi đánh máy) thay vì "onlyImmediateChildren = true", Spring MVC sẽ bỏ qua các tham số typoed và sẽ cho rằng "onlyImmediateChildren" là null . Nhà phát triển sẽ nhận được danh sách kết quả không chính xác một chút và sẽ không nhận thấy lỗi. Những vấn đề như vậy có thể phổ biến và khó chẩn đoán. Tôi muốn kiểm tra không có params typoed trong chuỗi truy vấn để ngăn chặn các vấn đề như vậy.
CẬP NHẬT
Có thể trích xuất danh sách thông số thực tế từ chuỗi truy vấn. Sau đó, nó có thể được so sánh với danh sách các tham số cho phép. Nếu tôi mã hóa danh sách tham số được phép, nó sẽ sao chép chữ ký phương thức. Tôi tự hỏi liệu có dễ dàng trích xuất danh sách các thông số được phép từ chữ ký phương thức hay không (ví dụ: bằng chú thích @RequestParam)?
Rất cám ơn
Maxim
Bạn đang sử dụng phiên bản Spring nào? –
Bạn có nghĩa là spring MVC? Tôi sử dụng tệp có tên "Spring-webmvc.3.0.5.Release.jar." –