在Django中将响应中的JSON数据传递给请求

时间:2015-09-04 00:39:19

标签: django node.js python-requests

我有一个Django(1.8.3)视图:

  • 向服务器A(jetty)发出GET请求,该请求返回响应正文中的JSON数据。然后,

  • 对服务器B(node.js)发出POST,将从服务器A收到的JSON数据传递到请求正文中。

JSON数据的结构如下:

{
    name: "foo",
    details: { 
        "date": "today",
        "isCool": "no",
    }, 
    stuff: [
        { 
            "id": "1234",
            "rating": "5",
        }, { 
            "id": "5678",
            "rating": "1",
        },       
    ]
}

但我无法弄清楚如何在我的Django视图中将服务器A的JSON响应转换为对服务器B的请求。如果我这样做:

jetty_response = requests.request(method='GET', url=jetty_url)
node_response = requests.request(method="POST", url=node_url, 
                   data=jetty_response.json())

我在服务器B中获得了JSON对象,但它看起来像这样:

  {
    name: "foo",
    details: [ "date", "isCool"],
    stuff: [ "id", "rating",  "id", "rating"]

即。 name属性是正确的,但是详细信息dict是作为原始字典的键集接收的,并且填充列表作为原始字典中所有对象中的键集的平面数组接收。

如果我在django中这样做:

node_response = requests.request(method="POST", url=node_url, 
                  data=json.dumps(jetty_response.json()))

我在节点中得到一个空对象,如果我这么做的话,也是如此:

data=jetty_response.content

如何提出此请求?

1 个答案:

答案 0 :(得分:1)

自己想出来。

通常情况下,最简单的答案是:

node_response = requests.request(method="POST", url=node_url, 
               data=jetty_response.content) 

一旦我仔细查看我的日志并且意识到我的POST弹回413,然后调整了我的bodyParser的大小限制,就行了。