1

tl;dr; Sending below curl works but I cannot do the same in supertest (what wrap 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"'

I can do delete item from web interface where I attach file with required text.
Then using dev tools I extracted curl command presented above and this works as a charm.
How to execute it in js?
Tried:

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

Then I get "status":400,"error":"BodyNotReadable",
Maybe using write can be an answer but I don't know how to do that.
Full list of available options https://github.com/visionmedia/superagent/blob/master/lib/node/index.js

pbaranski
  • 22,778
  • 19
  • 100
  • 117

2 Answers2

1

Try:

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

The key is to JSON.stringify the payload you want to send. Should work.

pbaranski
  • 22,778
  • 19
  • 100
  • 117
Daniel
  • 338
  • 3
  • 13
0

Can you try this please :

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
  });
Arkerone
  • 1,971
  • 2
  • 22
  • 35