Axios: ํŽ˜์ดํŒ” API์— POST ์š”์ฒญ์„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค

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

์•ˆ๋…•ํ•˜์„ธ์š”, mi ๋ฌธ์ œ๋Š” ๋” ๋งŽ์€ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. axios๊ฐ€ ์ด ์ปฌ์ด ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” POST ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

curl -v https://api.sandbox.paypal.com/v1/oauth2/token \
  -H "Accept: application/json" \
  -H "Accept-Language: en_US" \
  -u "EOJ2S-Z6OoN_le_KS1d75wsZ6y0SFdVsY9183IvxFyZp:EClusMEUk8e9ihI7ZdVLF5cZ6y0SFdVsY9183IvxFyZp" \
  -d "grant_type=client_credentials"

๋‚ด ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    var instance = axios.create({
        baseURL: 'https://api.sandbox.paypal.com/v1/oauth2/',
        timeout: 1000,
        method: 'post',
        headers: {
          'Accept': 'application/json',
          'Accept-Language': 'en_US',
          'content-type': 'application/x-www-form-urlencoded',
          'EOJ2S-Z6OoN_le_KS1d75wsZ6y0SFdVsY9183IvxFyZp':'EClusMEUk8e9ihI7ZdVLF5cZ6y0SFdVsY9183IvxFyZp'
        },
        data: {
          "grant_type": "client_credentials",
        },    
});

  instance.post('/token')
      .then(function(response){
        console.log(response.data); // ex.: { user: 'Your User'}
        console.log(response.status); // ex.: 200
      });

๋‚ด ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ์—์„œ ํ˜ธ์ถœํ•˜๊ณ  ์žˆ์œผ๋ฉฐ 401 ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ PAYPAL API https://developer.paypal.com/docs/integration/direct/make-your-first-call/์— ๋Œ€ํ•œ ๋งํฌ์ž…๋‹ˆ๋‹ค.

๋ฌธ์„œ๋ฅผ ์ฝ์–ด๋ณด๋‹ˆ ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ์•”ํ˜ธ๋ฅผ ์ž…๋ ฅํ•  ์œ„์น˜ ๋˜๋Š” ์ž๋™ํ™”๋ฅผ basicOuth๋กœ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.
instance.defaults.headers.common['Authorization'] = AUTH_TOKEN;
AUTH_TOKEN์ด ๋ฌด์—‡์ธ๊ฐ€์š”? ์ƒ์ˆ˜์ž…๋‹ˆ๊นŒ? ์–ด๋–ค ๊ฐ’์„ ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์–ด์จŒ๋“  ๋ฏธ๋ฆฌ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

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

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ํ•ด๊ฒฐํ–ˆ๋‹ค! ๋ˆ„๊ตฐ๊ฐ€ ๋„์›€์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด Gist๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. https://gist.github.com/TigaxMT/b57c11df3e4ebd0510858ec3df775efa

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

๊ธฐ๋ณธ ์ธ์ฆ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ์ธ์ฆํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ํ•ด๋‹น ์š”์ฒญ๊ณผ ํ•จ๊ป˜ JSON์„ ๋ณด๋‚ด๊ณ  ์žˆ์œผ๋ฉฐ ์ปฌ ๋ฒ„์ „์€ "application/x-www-form-urlencoded"๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์„œ๋ฅผ ์ฝ์œผ์‹ญ์‹œ์˜ค:

@Spartano ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๊นŒ? ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ ค๊ณ  ํ•˜๋Š”๋ฐ 401๋„ ํ‘œ์‹œ๋˜๊ณ  ์ด ๋ฉ”์‹œ์ง€๋Š” "์ธ์ฆ ์ž๊ฒฉ ์ฆ๋ช…์ด ์ž˜๋ชป๋˜์—ˆ๊ฑฐ๋‚˜ Authorization ํ—ค๋”๊ฐ€ ๋ˆ„๋ฝ๋˜์–ด ์ธ์ฆ์— ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค."๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋‚ด ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

axios.post('https://api.sandbox.paypal.com/v1/oauth2/token', querystring.stringify({

    grant_type: 'client_credentials',

    withCredentials: true,

    headers:{

        'Accept': 'application/json',
        'Accept-Language': 'en_US',
        'Content-Type': 'application/x-www-form-urlencoded',
    },

    auth: {

        username: 'ClientID',
                password: 'Secret'
    }


})).then((response) => {

    console.log(response);

}).catch((err) => {console.log(err);});

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ํ•ด๊ฒฐํ–ˆ๋‹ค! ๋ˆ„๊ตฐ๊ฐ€ ๋„์›€์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด Gist๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. https://gist.github.com/TigaxMT/b57c11df3e4ebd0510858ec3df775efa

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