Я использую Axios при программировании в ReactJS и делаю вид, что отправляю запрос DELETE на свой сервер.
Для этого мне нужны заголовки:
headers: {
'Authorization': ...
}
и тело состоит из
var payload = {
"username": ..
}
Я искал в интервалах и только обнаружил, что метод DELETE требует «param» и не принимает «data».
Пытался отправить вот так:
axios.delete(URL, payload, header);
или даже
axios.delete(URL, {params: payload}, header);
Но вроде ничего не работает ...
Может ли кто-нибудь сказать мне, возможно ли (я предполагаю, что это возможно) отправить запрос DELETE с заголовками и телом и как это сделать?
Заранее спасибо!
источник
Вот краткое описание форматов, необходимых для отправки различных http-глаголов с аксиомами:
GET
: Два путиПервый способ
axios.get('/user?ID=12345') .then(function (response) { // Do something })
Второй способ
axios.get('/user', { params: { ID: 12345 } }) .then(function (response) { // Do something })
Два приведенных выше эквивалентны. Обратите внимание на
params
ключевое слово во втором методе.POST
а такжеPATCH
axios.post('any-url', payload).then( // payload is the body of the request // Do something ) axios.patch('any-url', payload).then( // payload is the body of the request // Do something )
DELETE
axios.delete('url', { data: payload }).then( // Observe the data keyword this time. Very important // payload is the request body // Do something )
Ключевые выводы
get
запросам необязательно нуженparams
ключ для правильной установки параметров запросаdelete
запросы с телом нужно установить подdata
ключисточник
аксиос. Удалять есть прошло URL и дополнительной конфигурации .
Поля, доступные для конфигурации, могут включать заголовки .
Это делает так, что вызов API может быть записан как:
const headers = { 'Authorization': 'Bearer paperboy' } const data = { foo: 'bar' } axios.delete('https://foo.svc/resource', {headers, data})
источник
const headers = {'Authorization': ...}
иdata = {'username': ...}
заканчивается,axios.delete('http://...', {headers, data})
но сервер не может получить доступ к заголовкам ...У меня была та же проблема, которую я решил вот так:
axios.delete(url, {data:{username:"user", password:"pass"}, headers:{Authorization: "token"}})
источник
Собственно,
axios.delete
поддерживает тело запроса.Он принимает два параметра: а
URL
и необязательныйconfig
. То есть...axios.delete(url: string, config?: AxiosRequestConfig | undefined)
Вы можете сделать следующее, чтобы задать тело ответа для запроса на удаление:
let config = { headers: { Authorization: authToken }, data: { //! Take note of the `data` keyword. This is the request body. key: value, ... //! more `key: value` pairs as desired. } } axios.delete(url, config)
Я надеюсь, что это помогает кому-то!
источник
Для удаления вам нужно будет сделать следующее
axios.delete("/<your endpoint>", { data:<"payload object">})
У меня это сработало.
источник
Чтобы отправить HTTP DELETE с некоторыми заголовками,
axios
я сделал следующее:const deleteUrl = "http//foo.bar.baz"; const httpReqHeaders = { 'Authorization': token, 'Content-Type': 'application/json' }; // check the structure here: https://github.com/axios/axios#request-config const axiosConfigObject = {headers: httpReqHeaders}; axios.delete(deleteUrl, axiosConfigObject);
axios
Синтаксис различных глаголов HTTP (GET, POST, PUT, DELETE) является сложным , потому что иногда второй параметр должен быть тело HTTP, некоторые другие времена (когда это возможно , не потребуется) вы просто передать заголовки , как 2 - го параметра .Однако предположим, что вам нужно отправить запрос HTTP POST без тела HTTP, тогда вам нужно передать его
undefined
в качестве второго параметра.Помните, что согласно определению объекта конфигурации ( https://github.com/axios/axios#request-config ) вы все равно можете передавать тело HTTP в HTTP-вызове через
data
поле при вызовеaxios.delete
, однако для HTTP Глагол DELETE будет проигнорирован.Эта путаница между вторым параметром, который иногда является телом HTTP, а иногда - целым
config
объектом,axios
связана с тем, как были реализованы правила HTTP. Иногда тело HTTP не требуется для того, чтобы HTTP-вызов считался действительным.источник
Я столкнулся с той же проблемой ... Я решил ее, создав собственный экземпляр axios. и используя это для выполнения аутентифицированного запроса на удаление ..
const token = localStorage.getItem('token'); const request = axios.create({ headers: { Authorization: token } }); await request.delete('<your route>, { data: { <your data> }});
источник
Я пробовал все вышеперечисленное, но у меня не получалось. В итоге я просто использовал PUT (вдохновение можно найти здесь ) и просто изменил логику на стороне сервера, чтобы выполнить удаление этого URL-адреса. (переопределение функции django rest framework).
например
.put(`http://127.0.0.1:8006/api/updatetoken/20`, bayst) .then((response) => response.data) .catch((error) => { throw error.response.data; });
источник
Я нашел способ, который работает:
axios .delete(URL, { params: { id: 'IDDataBase'}, headers: { token: 'TOKEN', }, }) .then(function (response) { }) .catch(function (error) { console.log(error); });
Надеюсь, это сработает и для вас.
источник