Axios: ๋ฐ์ดํ„ฐ๊ฐ€ ์ œ๋Œ€๋กœ ์ „์†ก๋˜์ง€ ์•Š๋Š” ๊ฒŒ์‹œ๋ฌผ

์— ๋งŒ๋“  2016๋…„ 08์›” 18์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: axios/axios

์•ˆ๋…•ํ•˜์‹ญ๋‹ˆ๊นŒ,
<form> ์—†๋Š” <button> ๋ฅผ ํด๋ฆญํ•˜์—ฌ POST๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์€ django ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฌธ์ œ๋Š” ๋ณด๊ธฐ ๊ธฐ๋Šฅ์œผ๋กœ ์ „์†ก๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ œ๋Œ€๋กœ ์ „์†ก๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ์€ axios ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

 axios({
        method: 'post',
        url: '/url/to/view'
        data: {
            obj_id: objectid,
            content_type: contenttype,
            like: !is_liked
        },
        xsrfCookieName: 'csrftoken',
        xsrfHeaderName: 'X-CSRFToken',
        headers: {'X-Requested-With': 'XMLHttpRequest',
                  'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'},
    }).then(function (response) { 
        console.log(response);
    });

์—ฌ๊ธฐ ์ฝ”๋“œ ๋ณด๊ธฐ:

def my_view(request):
    print request.POST
    return HttpResponse('XX')

ํ‚ค๊ฐ€ ์ „์ฒด ์‚ฌ์ „์ด๊ณ  ๊ฐ’์ด ๋น„์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— request.POST ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
<QueryDict: {u'{"obj_id":"182","content_type":"video","like":true}': [u'']}>

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋ฌธ์ œ๋Š” 'application/x-www-form-urlencoded' ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด์•ผ ํ•˜๋Š” ๋™์•ˆ ๊ฐ์ฒด๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ JSON์œผ๋กœ ์ง๋ ฌํ™”๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์‰ฌ์šด ํ•ด๊ฒฐ์ฑ…์€ qs ์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

var qs = require('qs');
axios.post('/foo', qs.stringify({ 'bar': 123 });

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด ๋Œ“๊ธ€ ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋„์›€์ด ๋˜์—ˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค!

๋ชจ๋“  3 ๋Œ“๊ธ€

๋ฌธ์ œ๋Š” 'application/x-www-form-urlencoded' ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด์•ผ ํ•˜๋Š” ๋™์•ˆ ๊ฐ์ฒด๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ JSON์œผ๋กœ ์ง๋ ฌํ™”๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์‰ฌ์šด ํ•ด๊ฒฐ์ฑ…์€ qs ์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

var qs = require('qs');
axios.post('/foo', qs.stringify({ 'bar': 123 });

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด ๋Œ“๊ธ€ ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋„์›€์ด ๋˜์—ˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค!

๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ ๊ฐ’์„ FormData ๊ฐœ์ฒด์— ๋„ฃ๊ณ  ๊ฒŒ์‹œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ธฐ๋ณธ Django >1.8 ์„ค์ •์—์„œ ์ž˜ ์ž‘๋™ํ•˜๋Š” ์ž‘์€ ๋ž˜ํผ aroud axios๋ฅผ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ˆ„๊ตฐ๊ฐ€๋ฅผ ๋•๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค!

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