REST的json表示。文件还是发布表单数据?

REST的json表示。文件还是发布表单数据?,json,rest,Json,Rest,当我向服务器发送实体的JSON表示时,应如何交付有效负载?在我看来,有两种选择: 作为上载的文件 作为POST表单数据的内容 在我看来,第一种情况不能通过AJAX请求执行,但它似乎是“正确的”。你知道有没有更好的“事实上”方式来执行这项任务吗?你可以使用POST方法发送你想要的任何数据,也就是说,你可以用JSON加载它(请求的主体),这是完全正确的。只需确保您的服务器应用程序能够对其进行解码——为此,您可以为您的请求提供正确的内容类型标题(“应用程序/json”或任何正确的媒体类型),以便服务器

当我向服务器发送实体的JSON表示时,应如何交付有效负载?在我看来,有两种选择:

  • 作为上载的文件
  • 作为POST表单数据的内容

  • 在我看来,第一种情况不能通过AJAX请求执行,但它似乎是“正确的”。你知道有没有更好的“事实上”方式来执行这项任务吗?

    你可以使用POST方法发送你想要的任何数据,也就是说,你可以用JSON加载它(请求的主体),这是完全正确的。只需确保您的服务器应用程序能够对其进行解码——为此,您可以为您的请求提供正确的内容类型标题(“应用程序/json”或任何正确的媒体类型),以便服务器端知道如何反序列化有效负载。

    直接从Javascript发布json实体应该没有问题。有关如何使用jQuery的示例,请参见


    我认为使用表单发布数据没有任何好处。

    要使用jQuery将原始数据作为ajax请求发送,请使用
    $.ajax()
    并将
    processData=false
    contentType
    设置为您想要的任何值(
    application/json


    设置
    processData=false
    将阻止jQuery将
    data
    转换为表单post。

    我的意思是Ajax.post接受数据作为键/值对(序列化或非序列化)。这意味着这些数据将出现在django的request.POST中,例如,而不是request.POST文件中。为了建立一个文件上传,这是一个非常复杂的问题。奇怪的是,框架经常会使使用HTTP比直接访问HTTP更困难。