<p>axios.delete - '๋ฐ์ดํ„ฐ' ๊ฐœ์ฒด๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?</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์— ์ „๋‹ฌํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ์š”์ฒญ ๊ตฌ์„ฑ ๊ฐœ์ฒด ์ด๋ฉฐ ์ด ๊ฐœ์ฒด์—์„œ 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 ๋ณ€ํ™˜ ์š”์ฒญ 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์— ์ „๋‹ฌํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ์š”์ฒญ ๊ตฌ์„ฑ ๊ฐœ์ฒด ์ด๋ฉฐ ์ด ๊ฐœ์ฒด์—์„œ 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 ๋ณ€ํ™˜ ์š”์ฒญ 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 ์ฃผ์–ด์ง„ 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]

HTTP DELETE ๋ฉ”์„œ๋“œ์—๋Š” ์š”์ฒญ ๋ณธ๋ฌธ์ด ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. DELETE๋Š” URI๋กœ ์‹๋ณ„๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ฑฐํ•˜๋„๋ก ์›๋ณธ ์„œ๋ฒ„์— ์ง€์‹œํ•ฉ๋‹ˆ๋‹ค.

์ œ ๊ฒฝ์šฐ์—๋„ ํŽ˜์ด๋กœ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์–ด๋Š ์ชฝ์ด๋“  data ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘๋™ํ•˜๋Š” ๊ฒฝ์šฐ ์•ฝ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํŽธ์ง‘: ์‚ฌ์–‘ ์€ ํŽ˜์ด๋กœ๋“œ ์ „๋‹ฌ์„ ํ—ˆ์šฉ/๊ธˆ์ง€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

axios.delete์— ๋Œ€ํ•œ ์•ฝ์–ด๋Š” ์—†์Šต๋‹ˆ๋‹ค.

axios.request(๊ตฌ์„ฑ)

axios.get(url[, ๊ตฌ์„ฑ])

axios.delete(url[, ๊ตฌ์„ฑ])

axios.head(url[, ๊ตฌ์„ฑ])

axios.post(url[, ๋ฐ์ดํ„ฐ[, ๊ตฌ์„ฑ]])

axios.put(url[, ๋ฐ์ดํ„ฐ[, ๊ตฌ์„ฑ]])

axios.patch(url[, ๋ฐ์ดํ„ฐ[, ๊ตฌ์„ฑ]])

@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๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ณธ๋ฌธ์ด 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`, {๋ฐ์ดํ„ฐ: { ์ด๋ฆ„: ๋ฐ์ดํ„ฐ ์ด๋ฆ„ }})

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰