Php 我应该如何使用Zend Framework最小化验证逻辑来处理XML/JSON REST请求

Php 我应该如何使用Zend Framework最小化验证逻辑来处理XML/JSON REST请求,php,zend-framework,Php,Zend Framework,我正在使用Zend_框架编写一个小型restful web服务。我想支持以下几点: JSON请求 XML请求 普通HTML Post请求 上下文切换是通过上下文切换助手完成的,因此没有问题 但是,我没有编写逻辑来验证和过滤每个请求类型的输入,而是想知道是否应该执行以下操作之一: 将Post请求的JSON/HTTP转换为XML,并根据XSD和Zend_验证进行验证* 使用Zend_JSON将XML/HTTP表单POST请求转换为JSON,并使用和Zend_验证验证解码的JSON* 我的问题是,我能

我正在使用Zend_框架编写一个小型restful web服务。我想支持以下几点:

  • JSON请求
  • XML请求
  • 普通HTML Post请求
  • 上下文切换是通过上下文切换助手完成的,因此没有问题

    但是,我没有编写逻辑来验证和过滤每个请求类型的输入,而是想知道是否应该执行以下操作之一:

  • 将Post请求的JSON/HTTP转换为XML,并根据XSD和Zend_验证进行验证*
  • 使用Zend_JSON将XML/HTTP表单POST请求转换为JSON,并使用和Zend_验证验证解码的JSON*
  • 我的问题是,我能实现的最好的方法是什么?a)允许我支持多种请求类型,但b)意味着我不会为每种不同的请求类型编写逻辑以进行验证


    我发现XML方法也是我学习的方法之一,但我想知道其他人(tm)是如何做到这一点的。

    我不确定它在您的情况下是否有意义,但如果您要为相同的服务接受不同类型的输入,您可以为您拥有的每个服务方法创建一个模型,使用JSON、XML或HTTP输入填充模型,然后验证存储在模型中的数据

    Matthew Weier O'Phinney有一篇很好的帖子,您可以在填充模型时使用它来验证数据。你可以调整这个想法以更好地满足你的需要


    但在我看来,如果您使用每种输入格式用期望的数据填充一个公共对象,那么您只能对其进行一次筛选和验证。

    我不确定这在您的情况下是否有意义,但如果您要为相同的服务接受不同类型的输入,您可以为您拥有的每个服务方法创建一个模型,使用JSON、XML或HTTP输入填充模型,然后验证存储在模型中的数据

    Matthew Weier O'Phinney有一篇很好的帖子,您可以在填充模型时使用它来验证数据。你可以调整这个想法以更好地满足你的需要


    但在我看来,如果您使用每种输入格式用期望的数据填充一个公共对象,那么您只能对其进行一次筛选和验证。

    好主意,下面是我如何实现它的;1.创建验证工厂类2。将一个名为validate的新私有方法添加到应用程序\u Model\u Mapper\u Foo 3。更新了应用程序\u Model\u Mapper\u Foo->save($object}以首先调用$this->validate($object})4。validate方法,调用工厂,实例化Zend\u validate\u5。$id->isValid($object->getId())?null:throweexception(新异常($id->getMessages());好主意,下面是我实现它的方法;1.创建一个验证工厂类2.向应用程序添加一个名为validate的新私有方法\u Model\u Mapper\u Foo 3.更新应用程序\u Model\u Mapper\u Foo->save($object}以首先调用$this->validate($object})4.验证方法,调用工厂,实例化Zend\u validate\u5.$id->isValid($object->getId())?null:throwException(新异常($id->getMessages());