我有一个使用spring mvc的restful服务器。许多控制器(虽然不是全部)采用特定的路径参数/fruits/{type}。
我需要集中配置什么类型的水果是可以接受的。也就是说,苹果、香蕉、樱桃都可以。对于其他一切,我需要抛出400级http状态码。
快速而优雅地完成这一点很重要。可以这样做的方法有:
- 我写了一些实用程序pojo和调用它的方法在每个控制器方法处理/水果/{type}。看起来很泥泞。 spring web请求拦截器春天
- 安全吗?
- AOP吗?
- 别的吗?
要达到这个目标,最专业、最快速、最优雅的方法是什么?
你可能不会得到"最佳方法"的答案。每种"最佳方式"都取决于你的具体情况、需求和愿望。这是一个"方法"…
我们在请求绑定期间通过propertyeditor来实现。
你可以有一个PropertyEditor每个控制器类型,如果你没有收到正确类型的"东西",你期望然后抛出一个异常从PropertyEditor。
你可以通过一个映射到RequestMappingHandlerAdapter的自定义PropertyEditorRegistrar来注册你的propertyededitor。
然后我会使用Spring SimpleMappingExceptionResolver将不同的异常映射到你想要返回的视图和错误代码。
顺便说一句,我会考虑使用404 vs 400,但那只是我。