如何做javascript请求(supertest,superagent)表现得像curl --data-binary

时间:2017-09-30 22:50:41

标签: javascript curl request supertest superagent

TL;博士; 发送到curl下方有效,但我不能在supertest中做同样的事情(包裹superagent https://github.com/visionmedia/superagent/

curl 'http://local/api/items' -X DELETE -H 'Accept-Encoding: gzip, deflate' -H 'content-type: application/json;charset=UTF-8' --data-binary '"1234"'

我可以从网页界面删除项目,我附上所需文字的文件 然后使用开发工具我提取了上面提到的curl命令,这就像一个魅力 如何在js中执行? 尝试:

const response = yield request('http://local')
      .delete('/api/items')     
      .set('Accept-Encoding', 'gzip, deflate')    
      .set('Content-Type', 'application/json;charset=UTF-8')
      .send("1234");

然后我明白了 "status":400,"error":"BodyNotReadable",
也许使用write可能是一个答案,但我不知道如何做到这一点 可用选项的完整列表https://github.com/visionmedia/superagent/blob/master/lib/node/index.js

2 个答案:

答案 0 :(得分:1)

尝试:

request
  .delete('http://url/')
  .set('Accept-Encoding', 'gzip, deflate')
  .set('Content-Type', 'application/json;charset=UTF-8')
  .send(JSON.stringify(body))
  .type('json')
  .then(response => {
      console.log(response)
  })
  .catch(error => {
      console.log(error)
  });

关键是JSON.stringify您要发送的有效负载。应该工作。

答案 1 :(得分:0)

请你试试这个:

request('http://local')
  .delete('/api/items')
  .set('Accept-Encoding', 'gzip, deflate')
  .set('Content-Type', 'application/json;charset=UTF-8')
  .write("1234")
  .end((err, res) => {
    // Get response here
  });