Node Express使用python API POST时的空体(请求库)

时间:2016-03-21 06:48:30

标签: python node.js rest express

我正在使用@ErikRas的入门套件

使用以下代码,我无法验证我的python程序。

这是我的python:

import requests
URL="http://localhost"
PORT="3030"

Session = requests.Session()
Request = Session.post(URL+':'+PORT+'/login', data={'name':'AuthedUserName'})
# (Password to follow proof of concept obviously)

在我的api.js文件中,我刚才:

import express from 'express';
import session from 'express-session';
import bodyParser from 'body-parser';
import config from '../src/config';
import * as actions from './actions/index';
import {mapUrl} from 'utils/url.js';
import http from 'http';

const app = express();

const server = new http.Server(app);

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(session({
  secret: 'react and redux rule!!!!',
  resave: false,
  saveUninitialized: false,
  cookie: { maxAge: 60000 }
}));

app.use((req, res) => {
/* There's heaps here, but all that is relevant is: */
console.log(req.body)

在控制台中,我刚刚收到{}

我找到了这篇文章: req.body empty on postsPython Post Request Body appears empty in Node server when sent

但是你可以看到我已经在使用bodyparser.json和bodyparser.urlencoded.extended = true

2 个答案:

答案 0 :(得分:0)

好的,我将我的pythons请求与我的web-app请求进行比较,方法是将请求打印到节点中的控制台。

我发现网络应用程序的标题比python的请求更多。请求。 Web应用程序: 引用者:' http://localhost:3001/login' 来源:' http://localhost:3001' 主持人:' http://localhost:3001' 连接:'关闭'

所以我把它包含在我的标题中,它有效!

我想查看哪个标题属性是必要的',所以我逐渐将所有内容都拉出来,看看是否会破坏POST请求。

原来我设法把所有东西拉出来!所以我现在使用的是:

r = Session.post(URL+':'+PORT+'/login',headers = {}, data={'name':'AuthedUserName'})

那就是!!我想了解为什么header = {}有效,但我需要继续我的项目!!

<<<<<<< ----编辑---->>>>>>>

以上是半年'是的,因为我的网络应用程序正在使用json,我想使用json,我需要做的是将我的标题更改为

headers = {u'content-type': u'application/json'}

然后在有效负载上使用json.dumps!

r = session.post('http://'+DB_URL+':3030/sinumecUpdate', headers = headers, data = json.dumps(dataObject))

我还需要退出

app.use(bodyParser.urlencoded({ extended: true }));

从我的节点API开始,只使用JSON主体解析器。

答案 1 :(得分:0)

import requests
import json

url = 'http://127.0.0.1'
data={'name':'AuthedUserName'}
headers = {'content-type': 'application/json'}

r = requests.post(url=url, data=json.dumps(data), headers=headers)