2016-12-18 138 views
0

我认为这应该是相当容易使用NPM模块之一,但我已经尝试了两个不同的,他们都发送URL没有附加标签尽可能我可以告诉。使用Node.js发送POST请求

的网址是:https://safebooru.org/index.php?page=dapi&s=post&q=index ,哪些需要发送一个PID,限制和标签。

但是我一直得到的回复是结果,如果我刚刚 'https://safebooru.org/index.php?page=dapi&s=post&q=index' 发送

,而不是说

'https://safebooru.org/index.php?page=dapi&s=post&q=index&pid=1&limit=10&tags=brown_hair'

请。是否有一个模块可以根据预期发送此dang请求,而不仅仅是提供的基本URL?

我尝试的模块是“请求”和“SuperAgent的”,这是我经#1类似的问题导致。

const rp = require("request") 
const sa = require("superagent"); 

class SafebooruGetter { 
    constructor(data){ 
     //none 
    } 

    get(limit, page, tags, callback){ 
     var results; 
     sa.post('https://safebooru.org/index.php?page=dapi&s=post&q=index') 
     .send({limit: limit, pid: page, tags: tags}) 
     .end(function(err, res){ 
      if(err) 
       console.log(err); 
      else 
       callback(res); 
     }); 

    } 


    get2(limit, page, tags){ 
     var options = { 
      method: 'POST', 
      url: 'https://safebooru.org/index.php?page=dapi&s=post&q=index', 
      form: { 
       "limit": limit, 
       "pid": page, 
       "tags": tags, 
      }, 
      headers: { 
       'User-Agent': 'Super Agent/0.0.1', 
       'Content-Type': 'application/x-www-form-urlencoded' 
      } 
      //json: true 
     }; 
     //console.log(rp(options)); 
     // return rp(options).then((data) => { return (data)}); 
     return rp(options, function(error, response, body){ 
      if(!error && response.statusCode == 200){ 
       console.log(body); 
       return body; 
      } 
     }); 
    } 
} 

回答

2

您发送的参数,这种形式的数据,

form: { 
      "limit": limit, 
      "pid": page, 
      "tags": tags, 
     }, 

但你期待它来为这样的网址查询参数,

https://safebooru.org/index.php?page=dapi&s=post&q=index&pid=1&limit=10&tags=brown_hair 

那是不可能的。

如果你希望它被作为查询参数才发这样的,

get2(limit, page, tags){ 
    var options = { 
     method: 'POST', 
     url: 'https://safebooru.org/index.php?page=dapi&s=post&q=index&pid='+page+'&limit='+limit+'&tags='+tags, 
     headers: { 
      'User-Agent': 'Super Agent/0.0.1', 
      'Content-Type': 'application/x-www-form-urlencoded' 
     } 
     //json: true 
    }; 
    //console.log(rp(options)); 
    // return rp(options).then((data) => { return (data)}); 
    return rp(options, function(error, response, body){ 
     if(!error && response.statusCode == 200){ 
      console.log(body); 
      return body; 
     } 
    }); 
} 

在另一边抓住它作为查询参数只喜欢在节点,

var limit = req.query.limit 
    var pid = req.query.pid 
    var tags = req.query.tags 

希望这帮助。

+0

是的,工作,谢谢! –