Validation RESTAPI验证层

Validation RESTAPI验证层,validation,rest,Validation,Rest,我想实现一个RESTful API,以便让客户访问我们的内部服务 关于API验证,我考虑了两种方法: 使用外部验证层,该层将覆盖资源暴露的区域 使用内部业务逻辑验证器,只需捕获内部异常和错误,并转换为API友好的异常 我个人赞成第一种方法,但由于验证属性可能会有代码重复,所以有人建议我使用第二种方法,我觉得这有点混乱和不必要。 例如,如果请求参数在一开始就无效,我不想访问非常低级的逻辑 哪种方法更合适?有什么最佳实践吗?您在哪里实现外部验证层?服务器端?它是如何凌驾于API之上的?最佳实践是

我想实现一个RESTful API,以便让客户访问我们的内部服务

关于API验证,我考虑了两种方法:

  • 使用外部验证层,该层将覆盖资源暴露的区域

  • 使用内部业务逻辑验证器,只需捕获内部异常和错误,并转换为API友好的异常

我个人赞成第一种方法,但由于验证属性可能会有代码重复,所以有人建议我使用第二种方法,我觉得这有点混乱和不必要。 例如,如果请求参数在一开始就无效,我不想访问非常低级的逻辑


哪种方法更合适?有什么最佳实践吗?

您在哪里实现外部验证层?服务器端?它是如何凌驾于API之上的?最佳实践是,模块在使用之前对进入其中的任何数据执行验证。除非您的外部验证层仍然部署在与API相同的模块中,否则您很容易受到它们的解耦和用户避开该层的影响。外部验证层将与API位于同一平台中,并且是服务器端。验证在任何情况下都会进行,不同之处在于,它要么在业务对象(服务)使用它之前进行(可能在它们需要时进行验证),要么在它到达业务对象之前在单独的验证层中进行。后者将是一个非常特定的接口,因为xsd是用于传入请求的xml接口。