Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   аналог getResource для отправки? (https://javascript.ru/forum/events/77584-analog-getresource-dlya-otpravki.html)

NeonMan 23.05.2019 12:03

аналог getResource для отправки?
 
Здравствуйте, подскажите такой момент, кто знает

Здесь я отправляю на сервер запрос:
export default class DataService {

  getResource = async (url) => {
    const res = await fetch(domain/data);

    return await res.json();
  }
};

Получаю объекты в массиве.

Подскажите, как отправить например два объекта туда с JSON
array: [
{
  id:1,
  title: "text"
 },
 {
  id:2,
  title: "text2"
 }
]

Malleys 23.05.2019 17:46

Цитата:

Сообщение от NeonMan
Подскажите, как отправить например два объекта туда с JSON

fetch("data", {
	method: "POST",
	body: JSON.stringify([{
			id: 1,
			title: "text"
		}, {
			id: 2,
			title: "text2"
		}
	])
});

NeonMan 23.05.2019 18:41

Цитата:

Сообщение от Malleys (Сообщение 508159)
fetch("data", {

О супер, спасибо, а "data" туда кладем url без кавычек?
fetch(domain/data, {


И если по адресу уже есть массив
[{
   id: 1,
   title: "text"
  }, 
  {
    id: 2,
    title: "text2"
  }
]

Новые объекты появятся в начале массива?


Не могли бы вы попробовать получить данные отсюда: http://starnavi-frontend-test-task.h...pp.com/winners
Здесь всего один небольшой массив, 6 объектов, если ввести в браузере они отобразятся, но я никак не могу получить этот массив через fetch, не хочет закидывать его в json(), может вы знаете в чем проблема? Пишет: Unexpected token < in JSON at position 0

Malleys 24.05.2019 13:39

Цитата:

Сообщение от NeonMan
но я никак не могу получить этот массив через fetch, не хочет закидывать его в json(), может вы знаете в чем проблема? Пишет: Unexpected token < in JSON at position 0

Там нет разрешения , чтобы получать данные с других доменов... Но вы можете использовать прокси...
<pre id="output"></pre>
<script>
(async function() {
	var message;

	try {
		const response = await fetch("https://cors-anywhere.herokuapp.com/https://starnavi-frontend-test-task.herokuapp.com/winners");
		const data = await response.json();

		message = JSON.stringify(data, null, "\t");
	} catch(error) {
		message = error.message;
	}

	document.getElementById("output").textContent = message;
})();
</script>


Я использую cors-anywhere.herokuapp.com только для примеров на этом форуме, вы должны заменить на своё собственное прокси, которое гарантированно стабильно и быстро будет работать!

NeonMan 24.05.2019 14:46

Цитата:

Сообщение от Malleys (Сообщение 508197)
Там нет разрешения , чтобы получать данные с других доменов...

Да, я использовал прокси по итогу вот такой:
express + axios
const express = require("express");
const app = express();

const axios = require("axios");

const bodyParser = require("body-parser");
app.use(bodyParser.json());

const cors = require("cors");
app.use(cors());

app.post("/", (req, res) => {
  const requestConfig = req.body;
  axios(requestConfig)
    .then(r => r.data)
    .then(data => {
      res.send(data);
    })
    .catch(() => {
      res.sendStatus(400)
    });
});

app.listen(8080);


Часовой пояс GMT +3, время: 04:12.