2016-12-18 44 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

是的,工作,謝謝! –