Вероятно, это дизайнерский выбор команды axios, и на то есть веские причины, но я пишу все свои POST/GET/PUT следующим образом:
const res = await axios.post(url, {
data: {
...
}
})
И мой сервер иногда ожидает данные внутри тела запроса DELETE (что может быть технически не в соответствии со спецификацией, но, тем не менее, это обычное дело), и в этом случае я должен написать свой DELETE в этой форме:
const res = await axios({
method: 'DELETE',
url: 'url',
data: {
...
}
})
Это прекрасно работает, но я вынужден использовать второй синтаксис, потому что axios.delete
не поддерживает тело запроса.
Поэтому я хотел бы попросить axios.delete
поддерживать тело запроса.
Спасибо
Мы часто используем data
с запросами GET на сервере, и они транслируются в параметры запроса. Отсутствие поддержки данных для некоторых методов является большим недостатком axios в моих надеждах на более изоморфный код.
Спасибо, здесь я нашел этот ответ
axiox.delete
поддерживает тело запроса. Он принимает два параметра: url
и необязательный config
. Вы можете использовать config.data
для установки тела ответа следующим образом:
axios.delete(url, { data: { foo: "bar" } });
post
, put
и patch
принимают 3 параметра: url
, data
и config
, так что вы можете можно использовать второй параметр, чтобы установить тело ответа следующим образом:
axios.put(url, { foo: "bar" });
Надеюсь, поможет!
Я думаю, что README
затрудняет понимание:
// `data` is the data to be sent as the request body
// Only applicable for request methods 'PUT', 'POST', and 'PATCH'
// When no `transformRequest` is set, must be of one of the following types:
// - string, plain object, ArrayBuffer, ArrayBufferView, URLSearchParams
// - Browser only: FormData, File, Blob
// - Node only: Stream, Buffer
data: {
firstName: 'Fred'
},
Эта часть: // Only applicable for request methods 'PUT', 'POST', and 'PATCH'
особенно.
пожалуйста, добавьте этот комментарий в документы
Это в документах https://github.com/axios/axios#request -method-aliases
в чем разница между этими двумя?
this.$axios.$delete(queryData.url,
{
params: { id: String(queryData.id) }
})
this.$axios.$delete(queryData.url,
{
body: { id: String(queryData.id) }
})
[params] работал на моей стороне
Самый полезный комментарий
axiox.delete
поддерживает тело запроса. Он принимает два параметра:url
и необязательныйconfig
. Вы можете использоватьconfig.data
для установки тела ответа следующим образом:post
,put
иpatch
принимают 3 параметра:url
,data
иconfig
, так что вы можете можно использовать второй параметр, чтобы установить тело ответа следующим образом:Надеюсь, поможет!