节点JS请求 - 承诺POST方法不识别字符串

时间:2017-08-24 14:07:53

标签: javascript node.js api

为了将我的node.js模块与另一台服务器连接,我使用了'request-promise'图书馆。当我想发布一些看起来像这样的东西时:

rp.({
   method: 'POST',
   headers:{
    'Content-Type': 'text/plain',
    'Authorization': ''
},
   uri: 'https://myendpoint.com',
   body:{
     name: 'here is my a name',
     code: 'here is my code',
     location: 'here is my location'
   }
}).then(...)

但是当我尝试使用此功能时,我会收到如下错误消息:

  RequestError: Error: Argument, error, options.body.
  TypeError: First argument must be a string or Buffer

我在身体中的所有论据都是字符串。我也对邮递员尝试了相同的方法,这对我有用。那么我做错了什么?

2 个答案:

答案 0 :(得分:1)

或者,您可以先JSON对对象进行字符串化,然后将其传递给body参数,而无需将json参数设置为true:

const myObject = {
    name: 'here is my a name',
    code: 'here is my code',
    location: 'here is my location'
};

const stringifiedObject = JSON.stringify(myObject);

rp.({
   method: 'POST',
   headers:{
    'Content-Type': 'text/plain',
    'Authorization': ''
   },
   uri: 'https://myendpoint.com',
   body: stringifiedObject
}).then(...)

答案 1 :(得分:0)

  

将数据POST到JSON REST API

     

option.body设置为您的数据,将json: true设置为将身体编码为   JSON。

var options = {
    method: 'POST',
    uri: 'http://api.posttestserver.com/post',
    body: {
        some: 'payload'
    },
    json: true // Automatically stringifies the body to JSON
};

来自:https://github.com/request/request-promise#post-data-to-a-json-rest-api