- From: Jimmy Wärting <notifications@github.com>
 - Date: Thu, 10 Feb 2022 12:00:51 -0800
 - To: whatwg/fetch <fetch@noreply.github.com>
 - Cc: Subscribed <subscribed@noreply.github.com>
 - Message-ID: <whatwg/fetch/issues/1389/1035433711@github.com>
 
it's also very common to post json to a rest api as well...
so how about something json-ish for Request as well while we are at it if we are going to have something for Response?
Today i just created a simple helper function to convert object into a blob and use that as a body instead, find it more easier than setting headers by myself. just let the fetch set the content-length & content-type header for you... works well for POJO Response stuff too.
```js
const toJSON = obj => new Blob([ JSON.stringify(obj) ], { type: 'application/json' })
new Response(toJSON({ a: 1 }))
fetch('/', {
  body: toJSON({ a: 1 })
})
```
conclusion: we need `Blob.fromJSON({ a: 1 })` 💥 
---
no but seriously... i think that fetch should be smart enough to be able to figure out if the body is a plain object then it should just simply serialize it for you... so you can just do:
```js
fetch('/', {
  body: { a: 1 }
})
// and
new Response({ a: 1 })
new Request('/', { method: 'post', body: { a: 1 } })
```
it is so so common to see higher lever of abstraction of this...
examples:
- `axios.post('https://httpbin.org/post', { answer: 42 })`
- `superagent.post('/api/pet').send({ name: 'Manny', species: 'cat' })`
- `await got.post('https://httpbin.org/anything', { json: { hello: 'world' } }`
- `require('simple-get')({ url, method: 'POST', body: { key: 'value' } })`
almost each and every other user-land http library deal with json somehow, but not fetch...
it feels very pointless that `await new Response({ a: 1 }).text() === '[object Object]'` i think we can do better.
-- 
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/fetch/issues/1389#issuecomment-1035433711
You are receiving this because you are subscribed to this thread.
Message ID: <whatwg/fetch/issues/1389/1035433711@github.com>
Received on Thursday, 10 February 2022 20:01:04 UTC