从Node.js服务器向python代码发送自定义响应,以获取POST请求

时间:2018-02-08 05:05:51

标签: javascript python node.js response

我正在运行Python代码将一些数据发布到我的Node.js服务器。在服务器上接收到数据后,我需要Node.js服务器将自定义响应和状态代码一起发送回Python。

我使用的是纯Node.js.没有像Express或Hapi这样的框架。我的代码完美无缺,但我无法打印所需的消息。

我的Python代码的一部分用于发布数据

import requests, json
payload = {
                     "DevId" : 'R',
                     "Sdata" : 'S',
                     "TimeS" : 'T',
                     "RSSI"  : 'U'
            }
jsonPayload=json.dumps(payload)
headers = {'Content-Type': 'application/json'}          
post_res =requests.post(url='http://localhost:5555/',data=jsonPayload, headers=headers)
print post_response

我在Node.js服务器上尝试过的是。

1

response.writeHead(200, { 'Content-Type': 'text/plain'});
response.end('Server has received the data')

输出<Response [400]>

2

response.writeHead(200, { 'Content-Type': 'text/plain','Trailer': 'Server-Message' });
response.addTrailers({ 'Server-Message': 'Ok' });
response.end();

输出<Response [200]>

3

var message = 'Invalid Device ID';
response.writeHead(400, message, {'content-type' : 'text/plain'});
response.end(message);

输出<Response [400]>

我没有收到上述代码的任何错误,所以我不知道我做错了什么。

我想要的输出,以及我需要打印从服务器接收的自定义消息的状态代码,在我执行Python代码的终端中。

<Response [200]> "The server has received the message"

1 个答案:

答案 0 :(得分:1)

根据requests documentation

尝试打印post_response.textpost_response

示例:

server.js:

const http = require('http')

const server = http.createServer((req,res) => {
  res.setHeader('Content-Type', 'text/html');
  res.writeHead(200, { 'Content-Type': 'text/plain'});
  res.end('Server has received the message');
})

server.listen(3000, (err) => {
  if(err) {
    console.error('error');
  }

  console.log('server listening on port 3000');
})

response.py:

import requests

r = requests.post('http://localhost:3000', { 'Content-Type': 'application/json'});

print(str(r) + " " + r.text)