Отправка POST запроса при взаимодействии через REST. СПИК
Для отправки POST запроса необходимы следующие данные:
- Адрес метода (подробности тут). Например, MethodName.
- Упаковка данных (подробности тут). Например, SendedData.
Чтобы отправить запрос, необходимо создать Http Request и указать параметры.
Ниже показан Пример 2. JS:
//создаем объект, позволяющий делать HTTP-запросы
var xmlhttp = new XMLHttpRequest();
//создаем соединение
xmlhttp.open(method, url, false);
//задаем header
xmlhttp.setRequestHeader("Accept", "json");
xmlhttp.setRequestHeader("Content-Type", "application/json");
//отправляем
xmlhttp.send(sendData);
Обработать полученные данные можно так, как показано ниже.
Пример 3. JS:
//возвращаем статус и тело ответа
var responseText = xmlhttp.responseText;
//создаем объект из полученного JSON
var parsedJson = JSON.parse(responseText);
return parsedJson;
Полный код метода отправки Post запроса с параметром на JavaScript выглядит следующим образом:
// url - ссылка на ресурс
// sendData - данные для отправки
// method - метод запроса (’GET’, ’POST’, ’PUT’...)
// Если method не был задан, то будет выполнен POST-запрос.
// Поле url - обязательное.
// Метод sendRequest возвращает результат запроса {status, response}.
var sendRequest = function(url, sendData, method) {
if (!url)
throw new Error(’Url required.’);
//если метод не передан, то подразумевается POST
method = method || "POST";
//если sendData не строка, то делаем из нее или пустого объекта строку
if (!(typeof sendData == ’string’ || sendData instanceof String)) {
sendData = JSON.stringify(sendData || {});
}
//создаем соединение
xmlhttp.open(method, url, false);
//задаем header
xmlhttp.setRequestHeader("Accept", "json");
xmlhttp.setRequestHeader("Content-Type", "application/json");
//отправляем
xmlhttp.send(sendData);
//возвращаем статус и тело ответа
var responseText = xmlhttp.responseText;
var parsedJson;
if (responseText) {
try {
//создаем объект из полученного JSON
parsedJson = JSON.parse(responseText);
} catch(e) {
alert("Incorrect JSON response from server");
}
}
return {
status: xmlhttp.status,
response: parsedJson
};
};