jsonrequest和httprequest之间有什么区别?

jsonrequest和httprequest之间有什么区别?,json,http,openerp,Json,Http,Openerp,我正在检查OpenERP-7.0和OpenERP-6.1中web模块控制器中的文件。然后我发现6.1使用jsonrequest(@openerpweb.jsonrequest)7.0使用httprequest(@openerpweb.httprequest)。两者之间的区别是什么?我没有研究OpenERPv7,但OpenERPv6.1同时使用-HttpRequest和JsonRequest。我想OpenerPv7也是一样的 它们都是关于客户端和服务器之间的通信。HttpRequest通过众所周知

我正在检查OpenERP-7.0和OpenERP-6.1中web模块控制器中的文件。然后我发现6.1使用jsonrequest(@openerpweb.jsonrequest)7.0使用httprequest(@openerpweb.httprequest)。两者之间的区别是什么?

我没有研究OpenERPv7,但OpenERPv6.1同时使用-HttpRequest和JsonRequest。我想OpenerPv7也是一样的

它们都是关于客户端和服务器之间的通信。HttpRequest通过众所周知的GET和POST方法进行通信。这意味着:

  • 客户端发送url(GET方法)或http正文(POST方法)中编码的请求
  • 服务器返回与请求相对应的对象。可以是html页面、PNG图像、CSS文件、JavaScript、XML编码数据或其他内容
JsonRequest是另一个用于客户端/服务器通信的协议——JSON-RPC 2.0的实现。您可能想了解更多信息。它是一个远程过程调用(RPC)协议,这意味着它允许客户端在服务器上启动某些方法的执行,并将一些参数传递给该方法。作为响应,客户端通过方法调用获得一些数据

编辑-关于decorators@openerpweb.jsonrequest和@openerpweb.httprequest的更多文字

一些方法用@openerpweb.jsonrequest装饰器装饰,其他方法用@openerpweb.httprequest装饰。这意味着第一组方法将可通过JSON RPC协议执行,第二组可通过纯HTTP协议访问

现在,有什么区别?我们需要jsonrequest和httprequest吗?让我们这样简化它:JSON更适合在服务器上执行方法并获得结果。当我们需要访问服务器上的某些资源时,HTTP更简单、更易于使用

为了清晰起见,让我们用一些例子来“装饰”一下。查看web.controllers.main.Export类的以下方法:

@openerpweb.jsonrequest
def formats(self, req):
    """ Returns all valid export formats

    :returns: for each export format, a pair of identifier and printable name
    :rtype: [(str, str)]
    """
    ...
此方法接受一些参数并返回包含所有已知导出格式的列表(Python列表对象)。它将在客户端的一些python代码中以编程方式调用

另一方面是“http”方法,如web.controllers.main.web类的方法css():

@openerpweb.httprequest
def css(self, req, mods=None):
    ....

此方法所做的只是将CSS文件返回给客户端。这是一个简单的操作,就像访问图像、HTML网页或服务器上的任何其他资源一样。我们在这里返回的资源与前一个示例中的Python列表没有什么复杂之处。我们不需要特殊的格式来对其进行额外编码。因此,我们不需要额外的数据编码格式JSON和远程过程调用协议JSON RPC

嗨,谢谢你的回答。我知道jsonrequest和httprequest都是用于通信的。我需要知道decorators(@openerp.jsonrequest和@openerpweb.httprequest)之间有什么区别,以及为什么两者都被使用?@OmaL:嗨,我想用比你需要的更详细的方式回答你,但请看我在回答中的编辑我不知道openerp,因此我不会给你答案,但有一个建议:使用Fiddler检查通过网络传输的HTTP请求/响应。