<p>axios.delete-'data 'オブジェクトを指定する必要がありますか?</p>

作成日 2017年03月03日  ·  22コメント  ·  ソース: axios/axios

エイリアスaxios.deleteを使用する場合、 dataを指定しないと、ペイロードはAPI呼び出しで送信されません。

あなたはしなければならない:

axios.delete(URL, {
 data: { foo: 'bar' }
})

それ以外の

axios.delete(URL, { foo: 'bar' })

これによると、 dataを定義する必要はありません。 dataを指定せずに、ペイロードで他のメソッドを使用することができました。

最も参考になるコメント

いいえ、これは機能しません。

Axiosに渡す必要があるのはRequestConfigオブジェクトであり、このオブジェクトにはdata #$プロパティとparamsプロパティがあります。 それらを使用して、サーバーにデータを送信します。

このように: axios.delete(URL, {params: {foo: 'bar'}})


delete request $では、 data paramsを使用する必要があります。ドキュメントを参照してください。

// "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

data: { firstName: 'Fred' },

全てのコメント22件

いいえ、これは機能しません。

Axiosに渡す必要があるのはRequestConfigオブジェクトであり、このオブジェクトにはdata #$プロパティとparamsプロパティがあります。 それらを使用して、サーバーにデータを送信します。

このように: axios.delete(URL, {params: {foo: 'bar'}})


delete request $では、 data paramsを使用する必要があります。ドキュメントを参照してください。

// "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

data: { firstName: 'Fred' },

@charlesrochati私は混乱しています。 paramsは、クエリ文字列パラメータを送信するためのものですが、これは私が行っていることではありません。
上で引用したものについては、 deleteについては何も述べていません。

paramsはクエリ文字列パラメータを送信することですが、それは私が行っていることではありません。

axios.deleteを作りたいのなら、それはまさにあなたがしなければならないことです。

axios.delete(URL, {は使用しません
data: { foo: 'bar' } //リクエストメソッド「PUT」、「POST」、「PATCH」にのみ適用可能
})
削除リクエストには、 axios.delete(URL, {を使用します
params: { foo: 'bar' }
})

'PUT'、 'POST'、および 'PATCH'を使用している場合にのみ、リクエスト本文としてデータを送信します。

axios.postまたは( axios.putまたはaxios.patch )と同じようにaxios.deleteを使用していると思います。 axios.deleteを使用する場合、サーバーにidを送信すると、サーバー自体が、指定されたidに一致するresourceを検出します。削除されます(または何らかのアクションをトリガーしますが、リクエストはhttp deleteとしてマップされます)。

axios.delete(URL, {を使用する
data: { foo: 'bar' }
}) resourceを送信していますが、これはまったく意味がありません。

以下のリンクを見てください、あなたはよりよく理解するでしょう:

http://stackoverflow.com/questions/12142652/what-is-the-usefulness-of-put-and-delete-http-request-methods

https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html [セクション9.7]

HTTPDELETEメソッドにはリクエスト本文を含めないでください。 DELETEは、URIで識別されるリソースを削除するようにオリジンサーバーに指示しています。

私の場合、ペイロードも提供します。 ただし、いずれにしても、 dataを使用して機能する場合は、省略形を使用して機能するはずです。

編集:仕様は、ペイロードの受け渡しを禁止/禁止していません。

axios.deleteの省略形はありません:

axios.request(config)

axios.get(url [、config])

axios.delete(url [、config])

axios.head(url [、config])

axios.post(url [、data [、config]])

axios.put(url [、data [、config]])

axios.patch(url [、data [、config]])

@AkiraLaine仕様では、GETのリクエスト本文の送信も禁止されていません。 axiosでは、GETリクエストでもリクエスト本文を送信するために省略表記を使用できるようにする必要がありますか?

予想される動作であるため、この問題をクローズします。

@rubennorte DEL bodyをサポートする必要があると思います
HTTP 1.1
そして一例として、 Elastic

@cggauravサポートされています。

axios.delete('/some/uri', { body: 'my delete body' })

ちなみに、このようにaxios.delete( '/ some / uri'、{params:{id:1}})を使用すると、サーバーではreq.paramsではなくreq.queryにIDが表示されます。 ただそれをそこに投げたかったのです。

@aricsangchatは、axiosとはまったく関係のないExpressを使用している可能性があります。 expressがparamsを指す場合、それはリクエストパスで一致する動的な値について話します。 axiosがparamsを参照する場合、クエリ文字列パラメーターを参照しています。

// Express
router.get('/:foo/:bar', (req, res) => {
  res.json({
    query: req.query,
    params: req.params
  })
})
// Axios
axios.get('/some/uri', { params: { id: 1 } })
.then((response) => console.log(response.data))

実行から得られる出力は次のようになります。

{
  "query": { "id": 1 },
  "params": {
    "foo": "some",
    "bar": "uri"
  }
}

@jcreadyうんそれは私たちのセットアップです。

削除には本文(投稿など)を含めることができないと書かれているのはどこですか? axiosがこのhttps://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-19#page-23をサポートしていると便利です。

ありがとう

ご参考までに。 DELETEに本文を付けてはいけないというフェアポイント。 ただし、APIが制御不能な場合に、本文を送信しなければならないことがあります。 例えば
https://auth0.com/docs/api/authorization-extension#remove-user-from-roles👎

@duhseekoh

const extension_url = 'mycompany.auth0.com'
const access_token = 'abc123'
const user_id = 12345
const role_id = 67890

axios.delete(`https://${extension_url}/users/${role_id}/roles`, {
  headers: {
    'Authorization': `Bearer ${access_token}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify([
    user_id
  ])
})

@ jcready-確かに、例に感謝します。 axiosを使用するときにbodyをDELETEに渡す必要がある理由を追加したかっただけです。

@duhseekoh多分これは役立つでしょう: https ://github.com/axios/axios/issues/897#issuecomment -343715381

const response = await axios.delete('/api/matches/delete_match', {
        data: { matchInfo }
    });

dataで動作していますが、バージョン"axios": "^0.17.1"paramsでは動作していません

@quinnliu dataまたはparamsのどちらを使用するかは、バックエンドがリクエストを処理する方法によって異なると思います。

  • dataを使用すると、 postの場合と同じように、ペイロードをリクエスト本文内に配置できます。
  • paramsを使用することは、ペイロードをurlパラメーターとして扱うことです。 あなたが送る場合のように
axios.delete(URL, {
 params: { foo: 'bar' }
})

URL?foo=bar.にリクエストを送信するのと同じです

APIのaxiosからの抽象化。 データ内のパラメータ:名前のみ
`` api.delete( / projects / $ {idProjectTech} / techs`、{data:{name:data.name}})

このページは役に立ちましたか?
0 / 5 - 0 評価