Вход

Просмотр полной версии : аналог getResource для отправки?


NeonMan
23.05.2019, 12:03
Здравствуйте, подскажите такой момент, кто знает

Здесь я отправляю на сервер запрос:

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
Подскажите, как отправить например два объекта туда с JSON
fetch("data", {
method: "POST",
body: JSON.stringify([{
id: 1,
title: "text"
}, {
id: 2,
title: "text2"
}
])
});

NeonMan
23.05.2019, 18:41
fetch("data", {


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

fetch(domain/data, {


И если по адресу уже есть массив

[{
id: 1,
title: "text"
},
{
id: 2,
title: "text2"
}
]
Новые объекты появятся в начале массива?


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

Malleys
24.05.2019, 13:39
но я никак не могу получить этот массив через 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
Там нет разрешения , чтобы получать данные с других доменов...

Да, я использовал прокси по итогу вот такой:
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);