POST dữ liệu với mô-đun yêu cầu trên Node.JS


136

Mô-đun này là 'request https://github.com/mikeal/request

Tôi nghĩ rằng tôi đang theo dõi từng bước nhưng tôi đang thiếu một đối số ..

var request = require('request');
request.post({
        url: 'http://localhost/test2.php',
         body: "mes=heydude"
         }, function(error, response, body){
            console.log(body);
    });

ở đầu bên kia tôi có

echo $_POST['mes'];

Và tôi biết php không sai ...


Tại sao không sử dụng http.requesttrực tiếp? Tôi có cảm giác cơ thể không ánh xạ tới các tham số chuỗi truy vấn như thế. Hãy thửurl: 'http://localhost/test2.php?mes=heydude'
Raynos

Câu trả lời:


199

EDIT: Bạn nên kiểm tra kim . Nó làm điều này cho bạn và hỗ trợ dữ liệu nhiều phần, và nhiều hơn nữa.

Tôi nhận ra rằng tôi đang thiếu một tiêu đề

var request = require('request');
request.post({
  headers: {'content-type' : 'application/x-www-form-urlencoded'},
  url:     'http://localhost/test2.php',
  body:    "mes=heydude"
}, function(error, response, body){
  console.log(body);
});

6
Ghi nhớ JSON.stringifydữ liệu của bạn nếu bạn đang gửi'content-type': 'application/json'
Derek Soike 25/03/19

77

Khi sử dụng requestcho http POST, bạn có thể thêm tham số theo cách này:

var request = require('request');
request.post({
  url:     'http://localhost/test2.php',
  form:    { mes: "heydude" }
}, function(error, response, body){
  console.log(body);
});

42

Tôi đã phải đăng các cặp giá trị chính mà không có hình thức và tôi có thể làm điều đó dễ dàng như dưới đây:

var request = require('request');

request({
  url: 'http://localhost/test2.php',
  method: 'POST',
  json: {mes: 'heydude'}
}, function(error, response, body){
  console.log(body);
});

36

Nếu bạn đang đăng một cơ thể json, không sử dụng formtham số. Sử dụng formsẽ làm cho các mảng vào field[0].attribute, field[1].attributevv Thay vì sử dụng bodynhư vậy.

var jsonDataObj = {'mes': 'hey dude', 'yo': ['im here', 'and here']};
request.post({
    url: 'https://api.site.com',
    body: jsonDataObj,
    json: true
  }, function(error, response, body){
  console.log(body);
});

"jsonDataObj" phải được xâu chuỗi (JSON.opesify (...)) nếu không nó bị sập
Bác sĩ

Trên thực tế của tôi sụp đổ nếu bạn xâu chuỗi nó. Nó có thể phụ thuộc vào cách máy chủ nhận được thiết lập.
Andrew

1
Cảm ơn câu trả lời của bạn. Tôi có thể tìm tài liệu cho việc này ở đâu? Vì tôi nghi ngờ phương thức đăng bài, nhưng tài liệu trong Github không đủ khắc phục vấn đề này.
Bầu trời

16
var request = require('request');
request.post('http://localhost/test2.php', 
    {form:{ mes: "heydude" }}, 
    function(error, response, body){
        console.log(body);
});

11
  1. Cài đặt mô-đun yêu cầu, sử dụng npm install request

  2. Trong mã:

    var request = require('request');
    var data = '{ "request" : "msg", "data:" {"key1":' + Var1 + ', "key2":' + Var2 + '}}';
    var json_obj = JSON.parse(data);
    request.post({
        headers: {'content-type': 'application/json'},
        url: 'http://localhost/PhpPage.php',
        form: json_obj
    }, function(error, response, body){
      console.log(body)
    });

Ngoài các lỗi trong chuỗi json, cái này đã giúp tôi! Lưu ý rằng phần "biểu mẫu" có một đối tượng được truyền cho nó, vì vậy bạn chỉ có thể xác định mọi thứ trong đó là một đối tượng để bắt đầu và không thực hiện công việc chuẩn bị đó
rgbflawed

0

Tôi phải lấy dữ liệu từ một POSTphương thức của PHPmã. Những gì làm việc cho tôi là:

const querystring = require('querystring');
const request = require('request');

const link = 'http://your-website-link.com/sample.php';
let params = { 'A': 'a', 'B': 'b' };

params = querystring.stringify(params); // changing into querystring eg 'A=a&B=b'

request.post({
  headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, // important to interect with PHP
  url: link,
  body: params,
}, function(error, response, body){
  console.log(body);
});

-2

Tôi đặc biệt khuyên dùng axios https://www.npmjs.com/package/axios cài đặt nó bằng npm hoặc sợi

const axios = require('axios');

axios.get('http://your_server/your_script.php')
    .then( response => {
    console.log('Respuesta', response.data);
    })
    .catch( response => {
        console.log('Error', response);
    })
    .finally( () => {
        console.log('Finalmente...');
    });
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.