Используйте Fetch POST для сохранения (сохраняется) данных в файл JSON на сервере

голоса
0

Я хочу, чтобы сохранить данные в файл статической JSON, сидя на моем сервере с помощью Fetch запроса POST.

Возможно ли это сделать? Если так что любые советы или рекомендации будут оценены

Мой код Javascript, чтобы попытаться сохранить данные в мой файл JSON.

fetch('link-data.json', {    
method:'POST',
        headers: {
            'Accept': 'application/json, text/plain, */*',
            'Content-type':'application/json'
        },
        body:JSON.stringify({
            id:3,
            title:website_title,
            url:www.example.com,
            description:Hi_there_im_a_description
             })
        })
        .then((res) => res.json())
        .then((data) => console.log(data))

Мой файл JSON Я хочу, чтобы сохранить данные.

[
{
  id: 0,
  title: Twitter. It's what's happening.,
  url: https://twitter.com/?lang=en,
  description: From breaking news and entertainment to sports and politics, get the full story with all the live commentary.
},
{
  id: 1,
  title: Netflix - Watch TV Shows Online, Watch Movies Online,
  url: https://www.netflix.com/,
    description: Watch Netflix movies & TV shows online or stream right to your smart TV, game console, PC, Mac, mobile, tablet and more.
    },
    {
      id: 2,
      title: Facebook - Log In or Sign Up,
      url: https://www.facebook.com/,
      description: Create an account or log into Facebook. Connect with friends, family and other people you know. Share photos and videos, send messages and get updates.
    }
]
Задан 13/02/2020 в 23:55
источник пользователем
На других языках...                            


1 ответов

голоса
1

Да, ты можешь. Если вы используете Node.js, есть простой способ для достижения этой цели. Допустим, вы делаете запрос POST к website.com/saveFile. Тогда код будет выглядеть примерно так:

const url = require('url')
const http = require('http')
const fs = require('fs')

const server = http.createServer((req, res)=>{
    switch(url.parse(req.url).pathname){
        case '/saveFile':
            let body = ''

            //saving post data into variable body
            req.on('data', chunk=>{
                 body+= chunk.toString()
            })
            req.on('end', ()=>{
                //reading json file
                fs.readFile(__dirname+'/link-data.json', (err, data)=>{
                    if (err) throw err
                    dataJson = JSON.parse(data) //object with your link-data.json file
                    postData = JSON.parse(body) //postData is the variable containing your data coming from the client.
                    dataJson.push(postData)//adds the data into the json file.

                    //Update file
                    fs.writeFile(__dirname+'/link-data.json', JSON.stringify(dataJson), (err)=>{
                      if(err) console.log(err)
                      res.end()
                    })
                })
            })
    }
})

server.listen(5000, ()=>{
    console.log('Server listening at port 5000!')
})

Что это сделать, это открыть файл в формате JSON с использованием файловой системы (FS) Node.js внутреннего модуля, разбор его на объект Javascript и добавление данных в массив. Затем файл обновляется (с помощью функции fs.writeFile ()).

Вы можете также отправить ответ JSON, чтобы сигнализировать все шло, как и планировалось:

res.end(JSON.stringify({"status": "success"}))

Ответил 14/02/2020 в 00:18
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more