โพสต์ข้อมูลด้วยโมดูลคำขอบน Node.JS


138

โมดูลนี้คือ 'ขอhttps://github.com/mikeal/request

ฉันคิดว่าฉันทำตามทุกขั้นตอน แต่ฉันพลาดการโต้แย้ง ..

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

ในอีกด้านหนึ่งฉันมี

echo $_POST['mes'];

และฉันรู้ว่า php ไม่ผิด ...


ทำไมไม่ใช้http.requestโดยตรง? ฉันรู้สึกว่าร่างกายไม่ได้จับคู่กับพารามิเตอร์คิวรีสตริงแบบนั้น ลองurl: 'http://localhost/test2.php?mes=heydude'
Raynos

คำตอบ:


202

แก้ไข:คุณควรตรวจสอบเข็ม มันทำเพื่อคุณและรองรับข้อมูลหลายส่วนและอื่น ๆ อีกมากมาย

ฉันคิดว่าฉันไม่มีส่วนหัว

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
อย่าลืมJSON.stringifyข้อมูลของคุณหากคุณกำลังส่ง'content-type': 'application/json'
Derek Soike

79

เมื่อใช้requestสำหรับ http POST คุณสามารถเพิ่มพารามิเตอร์ด้วยวิธีนี้:

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

43

ฉันต้องโพสต์คู่ค่าคีย์โดยไม่มีรูปแบบและฉันสามารถทำได้ง่ายๆดังนี้:

var request = require('request');

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

37

หากคุณกำลังโพสต์เนื้อหา json อย่าใช้formพารามิเตอร์ การใช้formจะทำให้อาร์เรย์เข้าไปในfield[0].attribute, field[1].attributeฯลฯ แทนที่จะใช้bodyเช่นดังนั้น

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" ต้องเป็นสตริง (JSON.stringify (... )) มิฉะนั้นจะเกิดปัญหา
Doctor

จริงของฉันล่มถ้าคุณผูกมัน อาจขึ้นอยู่กับวิธีการตั้งค่าเซิร์ฟเวอร์รับ
Andrew

1
ขอบคุณสำหรับคำตอบ. ฉันจะหาเอกสารนี้ได้ที่ไหน เนื่องจากฉันสงสัยวิธีการโพสต์ แต่เอกสารใน Github ไม่เพียงพอที่จะแก้ไขปัญหานี้
ท้องฟ้า


12
  1. ติดตั้งโมดูลคำขอโดยใช้ npm install request

  2. ในรหัส:

    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)
    });
    

นอกเหนือจากข้อผิดพลาดในสตริง json แล้วสิ่งนี้ก็เป็นเคล็ดลับสำหรับฉัน! โปรดทราบว่าส่วน "ฟอร์ม" มีออบเจ็กต์ที่ส่งผ่านไปดังนั้นคุณสามารถกำหนดทุกอย่างในนั้นเป็นอ็อบเจ็กต์เพื่อเริ่มต้นและไม่ต้องเตรียมงานนั้น
rgbflawed

0

ฉันต้องได้รับข้อมูลจากPOSTวิธีการของPHPรหัส สิ่งที่ได้ผลสำหรับฉันคือ:

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);
});

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.