Axios: ์š”์ฒญ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ธ์Šคํ„ด์Šค ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๋ณ‘ํ•ฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2019๋…„ 05์›” 31์ผ  ยท  83์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: axios/axios

๋ฒ„๊ทธ ์„ค๋ช…

ํŠน์ • ์š”์ฒญ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์ธ์Šคํ„ด์Šค ๊ธฐ๋ณธ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๋ณ‘ํ•ฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์žฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด

const instance = axios.create({
    baseURL: "http://www.example.com",
    params: {
      q: "question",
    }
  });
instance.get("/page", 
  { 
    params: { 
      page: 2 
    }
  }
)

์š”์ฒญ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ์ฒด๊ฐ€ ์ธ์Šคํ„ด์Šค ๊ธฐ๋ณธ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ์ฒด๋ฅผ ์žฌ์ •์˜ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค์— ๋” ์ด์ƒ q ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์˜ˆ์ƒ๋˜๋Š” ํ–‰๋™

๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด ๋ชจ๋“  ๊ตฌ์„ฑ ์˜ต์…˜์ด ๋ณ‘ํ•ฉ ๋ฉ๋‹ˆ๋‹ค. https://github.com/axios/axios#instance - ๋ฐฉ๋ฒ•

์š”์ฒญ์— q ๋ฐ page ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋ชจ๋‘ ํฌํ•จ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ฒ„์ „ 0.18.0์—์„œ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

ํ™˜๊ฒฝ:

  • Axios ๋ฒ„์ „: 0.19.0
  • ์šด์˜ ์ฒด์ œ: 10.14.5(18F132)
  • ๋ธŒ๋ผ์šฐ์ €: Node Express ๋ฐ Chrome
  • ๋ธŒ๋ผ์šฐ์ €: Node 10.15.0, Chrome ๋ฒ„์ „ 74.0.3729.169(๊ณต์‹ ๋นŒ๋“œ)(64๋น„ํŠธ)

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

์ •์‹ ์ˆ˜์ •์„ ๊ธฐ๋‹ค๋ฆฌ๋ฉฐ ๐Ÿ˜ญ

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

๋‹ค์Œ์€ ์‹คํ–‰ ์ค‘์ธ ์˜ˆ์ž…๋‹ˆ๋‹ค. https://runkit.com/philipbjorge/axios-regression

์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ ํ† ํฐ๋„ ๋ณ‘ํ•ฉ๋˜์ง€ ์•Š๋Š” ์œ ์‚ฌํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ˆ˜์ •์€ params ๋ฅผ ์†์„ฑ์˜ deepMergeProperties ์„น์…˜์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ๋งŒํผ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์ฐจ์ด์ : https://github.com/axios/axios/compare/8d0b92b2678d96770304dd767cd05a59d37f12cf...zackseuberling :zs-fix-merge-params

@zackseuberling ์ด์— ๋Œ€ํ•œ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@jasonsaayman ํ…Œ์ŠคํŠธ๊ฐ€ ์ด์ œ #2196์—์„œ (์˜ฌ๋ฐ”๋ฅธ ๋™์ž‘์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๊ธฐ ์œ„ํ•ด) ํ†ต๊ณผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณง ์ถœ์‹œ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ๋‚˜๋ฅผ ๊ฝค ์งœ์ฆ๋‚˜๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ธ์ œ ์ˆ˜์ •๋  ์˜ˆ์ •์ธ๊ฐ€์š”?

@wphestiraid๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค ๐Ÿ˜ฌ

0.18.1 ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ๋ณด์•ˆ ์ทจ์•ฝ์ ์ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@serranoarevalo ์ €๋Š” 0.18.1 ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค :smile:

๋˜ํ•œ์ด ์ผ์–ด๋‚  ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค method ๊ฐ€ ๋‹จ์ง€์— ์ง€์ •๋œ ์•Š๋‹ค๋ฉด, create ํ˜ธ์ถœ์ด ์•„๋‹ˆ๋ผ request . ๊ทธ๊ฒƒ์„ ์•Œ์•„๋‚ด๋Š” ๋ฐ ํ•˜๋ฃจ ์ข…์ผ ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค. ํ™•์‹คํžˆ ํš๊ธฐ์ ์ธ ๋ณ€ํ™”์˜€์Šต๋‹ˆ๋‹ค. (์ด๊ฒƒ์€ ๋ณ„๋„์˜ ๋ฌธ์ œ์—ฌ์•ผ ํ•ฉ๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ๋™์ผํ•œ ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ์˜ ์ผ๋ถ€์ž…๋‹ˆ๊นŒ?)

์—ฌ๊ธฐ์„œ๋„ ๊ฐ™์€ ๋ฌธ์ œ

์ด๊ฒƒ์— ๋Œ€ํ•œ ์†Œ์‹์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์–ธ์ œ ๊ณ ์ณ์งˆ๊นŒ?

์ด๊ฒƒ์— ๋Œ€ํ•œ ์†Œ์‹์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์–ธ์ œ ๊ณ ์ณ์งˆ๊นŒ?

๋‹น๋ถ„๊ฐ„ v0.18.1 ๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. โœˆ๏ธ

๊ทธ๊ฒƒ์ด ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด์ง€๋งŒ ๋ณด์•ˆ ๋ฌธ์ œ๋กœ ์ธํ•ด ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๋ฉด v0.19.0 ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด์ง€๋งŒ ๋ณด์•ˆ ๋ฌธ์ œ๋กœ ์ธํ•ด ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๋ฉด v0.19.0 ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ค ์ข…๋ฅ˜์˜ ๋ณด์•ˆ ๋ฌธ์ œ? v0.18.0 ์— ๋ณด์•ˆ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ v0.18.1 ๋Š” ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

NPM์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๊ฐ์‚ฌ ์ค‘์— 0.18.1์„ ์ทจ์•ฝํ•œ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(์ ์ฒญ์–ด์ผ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Œ).

์ €์ฒ˜๋Ÿผ axios 0.19 ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ด์™€ ๊ฐ™์ด ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ˜„์žฌ๋กœ์„œ๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์œผ๋กœ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

// Pass to create only these params
const instance = axios.create({
  headers,
  baseURL,
  timeout,
});

// Pass others to the instance request
instance.request({
  method,
  url,
  data,
  ...options,
});

์ •์‹ ์ˆ˜์ •์„ ๊ธฐ๋‹ค๋ฆฌ๋ฉฐ ๐Ÿ˜ญ

์ฐฌ์„ฑ. ์ด ๋ฒ„๊ทธ๋ฅผ ์ซ“๋Š” ๋ฐ ์˜คํ›„๋ฅผ ๋ณด๋ƒˆ๊ณ  ๋ฌธ์ œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๊ธฐ์— ์™”์Šต๋‹ˆ๋‹ค.

์ˆ˜์ • ์‚ฌํ•ญ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ์ง„ํ–‰ ์ƒํ™ฉ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

https://github.com/axios/axios/blob/v0.19.0/lib/core/mergeConfig.js#L18 -L22

module.exports = function mergeConfig(config1, config2) {
  // eslint-disable-next-line no-param-reassign
  config2 = config2 || {};
  var config = {};

  utils.forEach(['url', 'method', 'params', 'data'], function valueFromConfig2(prop) {
    if (typeof config2[prop] !== 'undefined') {
      config[prop] = config2[prop];
    }
  });

v0.19.0 ์ฝ”๋“œ๋Š” mergeConfig(axios_instance.defaults, config)
์š”์ฒญ config.params๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋ถ€ ๋ฒ„์ „์ด ์ด์ „ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
์ด๊ฒƒ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ๊ฐ€ ์—†์Šต๋‹ˆ๊นŒ?
๋ฌผ์–ด๋ด์•ผ ํ•ด์š”.

@magicdawn ์ œ ์ƒ๊ฐ์—๋Š” ๊ทธ๋“ค์ด ๋ง์นœ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋“ค์ด ์ˆ˜์ • ์‚ฌํ•ญ์„ ๋ณ‘ํ•ฉํ•˜๊ธฐ ์œ„ํ•ด ๋ฌด์—‡์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š”์ง€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. @emilyemorehouse ํ•ด์ฃผ์„ธ์š” https://github.com/axios/axios/pull/2196 ๐Ÿ™!

์†Œ์‹์ด ์žˆ๋‚˜์š”? ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” ์ด๊ฒƒ์ด ๊ณง ํ•ด๊ฒฐ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค!!

์ด ๋ฌธ์ œ๋ฅผ ์ฐพ๋Š” ๋ฐ ์‹œ๊ฐ„์ด ์ข€ ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค... ์งœ์ฆ๋‚˜๋„ค์š”. ์ˆ˜์ •๋„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ดํ‚น์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์ƒ์„ฑ๋œ axios ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•ด get ๋ฉ”์†Œ๋“œ๋ฅผ ํŒจ์น˜ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

const client = axios.create({
  baseURL: YOUR_URL,
})
client.originalGet = client.get
client.get = (url, { params, ...config }) =>
  client.originalGet(url, {
    ...config,
    params: {
      key: YOUR_API_KEY,
      ...params,
    },
  })


// use it like normal
client.get('/something', { params: paramsToMerge } )

์ธ์Šคํ„ด์Šค ์ƒ์„ฑ์„ ๋ž˜ํ•‘ํ•˜๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ชจ๋“  ๋ฉ”์„œ๋“œ๋ฅผ ํŒจ์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

export const createInstance = (config?: AxiosRequestConfig): AxiosInstance => {
  const instance = axios.create(config);

  // Patch methods to merge default params into each request.
  // https://github.com/axios/axios/issues/2190
  for (const [method, configIndex] of methodsToPatch as Array<[keyof AxiosInstance, number]>) {
    const orig = instance[method] as Function;
    // @ts-ignore
    instance[method] = (...args: any[]) => {
      if (!args[configIndex]) {
        args[configIndex] = {};
      }
      args[configIndex].params = {
        ...(instance.defaults.params || {}),
        ...(args[configIndex].params || {}),
      };
      return orig.apply(instance, args);
    };
  }

  return instance;
};

const methodsToPatch = [
  ['getUri', 0],
  ['request', 0],
  ['get', 1],
  ['delete', 1],
  ['head', 1],
  ['post', 2],
  ['put', 2],
  ['patch', 2],
];

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์„ ์œ„ํ•ด ๋‚ด ๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ์ ์šฉ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ).

npm i qs

axios.interceptors.request.use(config => {
    config.paramsSerializer = params => qs.stringify({ ...params, myValue: 'foo' });
    return config;
}

@janpantel ๊ถ๊ธˆํ•œ๋ฐ ๋งค๊ฐœ๋ณ€์ˆ˜๋งŒ ์ˆ˜์ •ํ•˜๋ฉด ๋˜์ง€ ์•Š๋‚˜์š”?

axios.interceptors.request.use(config => {
    config.params.myValue = 'foo';
    return config;
}

@janpantel ๋•๋ถ„์— ๊ทธ๋ ‡๊ฒŒ ์ž‘๋™ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ๋‹ค๋ฅธ ๋Œ€์•ˆ๋ณด๋‹ค ๊นจ๋—ํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋งค์šฐ ์œ ์‚ฌํ•œ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์‹ค axios.create() params ์ธ์Šคํ„ด์Šค๋ฅผ ์ง€์ •ํ•  ์ˆ˜๋„ ์—†์Šต๋‹ˆ๋‹ค.
๊ทธ ๋™์•ˆ ์šฐ๋ฆฌ๋Š” ์š”์ฒญ ์ธํ„ฐ์…‰ํ„ฐ๋กœ ๋Œ์•„๊ฐ”์Šต๋‹ˆ๋‹ค ...

์ €์—๊ฒŒ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜ ๋‚  ๋ฏธ์น˜๊ฒŒ ํ•ด! ๋ชจ๋‘ ์ž˜ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ฐ‘์ž๊ธฐ ์ธ์ฆ ๋ฌธ์ œ์™€ CORS ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค! ์•ผ...

๋‚˜๋Š” v18์—์„œ v19๋กœ ์—…๋ฐ์ดํŠธ ํ•œ ๋‹ค์Œ์ด ๋ฒ„๊ทธ๋ฅผ ์ƒ์† ๋ฐ›์•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•„ ๋ƒˆ์Šต๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค ์ •์˜์—์„œ ์ •์˜ํ•œ '๊ธฐ๋ณธ' ๋งค๊ฐœ๋ณ€์ˆ˜(๊ตฌ์‹ authkey ๋งค๊ฐœ๋ณ€์ˆ˜)๊ฐ€ ๋‚˜์ค‘์— ์ƒˆ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํ•ด๋‹น ์ธ์Šคํ„ด์Šค๋ฅผ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ ๋ณ‘ํ•ฉ๋˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ์ƒˆ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๊ธฐ๋ณธ๊ฐ’์„ ์ฃฝ์˜€์Šต๋‹ˆ๋‹ค.

๋ฒ„์ „ 18๋กœ ๋‹ค์šด ๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด ๊ณง ์ˆ˜์ •ํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์ €๋Š” ๋ชจ๋“  ๋ชจ๋“ˆ์ด ์ตœ์‹  ์ƒํƒœ์ธ ๊ฒƒ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค! :NS

์ด์ œ ๋…ธ๋“œ ๋ฐ ๋ธŒ๋ผ์šฐ์ €์—์„œ umi-request๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
์—ฌํƒœ๊นŒ์ง€๋Š” ๊ทธ๋Ÿฐ๋Œ€๋กœ ์ž˜๋๋‹ค. ๐Ÿ˜„

๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ 2020๋…„ ์ดํ›„๋กœ ์—ฌ์ „ํžˆ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.
์„ค๊ณ„๋œ ๋Œ€๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์–ธ์ œ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

Axios ๋ฒ„์ „: 0.19.0

์œ ์šฉํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

v0.19.1 ์—๋Š” ์—ฌ์ „ํžˆ ์ด ๋ฒ„๊ทธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค ๐Ÿ˜ž

์ด ๋ฌธ์ œ๋ฅผ ์ด๋ฏธ ์ˆ˜์ •ํ•˜์‹ญ์‹œ์˜ค. ์ด๊ฒƒ์€ ์ •๋ง ์งœ์ฆ๋‚ฉ๋‹ˆ๋‹ค. ์ด ๋ฒ„๊ทธ๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๋ฐ 15๋ถ„์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค.

[email protected] ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ธํ„ฐ์…‰ํ„ฐ๋ฅผ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

[email protected]์—์„œ ์—ฌ์ „ํžˆ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€

npm ์„ค์น˜ --save [email protected]

์ด ๋ฌธ์ œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ ์ณ์ฃผ์„ธ์š”

์ผ์ข…์˜ ๋์—†๋Š” ๋“œ๋ผ๋งˆ

์ธ์Šคํ„ด์Šค ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํ˜ธ์ถœ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๋ณ‘ํ•ฉ๋˜์ง€ ์•Š๋Š” ๊ฒƒ๋„ ์•„๋‹™๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์š”์ฒญ์— ๋Œ€ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜์— ์ „ํ˜€ ๋“ค์–ด๊ฐ€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๊ณ  params๋ฅผ ์ •์˜ํ•˜๋ฉด get ์š”์ฒญ ์ค‘ ํ•˜๋‚˜์—์„œ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  get ํ˜ธ์ถœ์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ๋” ์‰ฌ์šด ์˜ต์…˜์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๊ฐ€ ์ข…๋ฃŒ๋œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? @renestalder๊ฐ€ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ๋งˆ์ง€๋ง‰ ๋ฒ„์ „์—์„œ๋Š” create ๋ฉ”์„œ๋“œ๋ฅผ ๋‹ค์†Œ ๋ฌด์˜๋ฏธํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ชจ๋“  ์š”์ฒญ์— โ€‹โ€‹์ธ์Šคํ„ด์Šค ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

#2656์— ์ˆ˜์ •๋˜์–ด ์ข…๋ฃŒ๋˜์—ˆ์ง€๋งŒ ์•„์ง ๋ฒ„์ „์ด ์—†์Šต๋‹ˆ๋‹ค.

@cheelahim์ด ์ œ์•ˆํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์ธํ„ฐ์…‰ํ„ฐ๋„ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

axios.interceptors.request.use(config => {
  config.params. = {
    myValue1: 'foo',
    myValue2: 'bar',
    ...config.params,        
  }
    return config;
}

๊ทธ๋Ÿฌ๋‚˜ ์—ฌ์ „ํžˆ ์ด ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•œ ์ƒˆ ๋ฒ„์ „์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Axios get ๋ฐ ๋งค๊ฐœ๋ณ€์ˆ˜

      const params = {
        name,
        id,
        pageIndex,
        pageSize,
      };
      const url = `/api/poi/query`;
      axios
      // .get(url, params)
      .get(url, {
        params,
      })
    .then(json => {
        // do something
      })
     .catch(err => console.log(`error`, err));

https://stackoverflow.com/questions/40947650/axios-get-in-url-works-but-with-second-parameter-as-object-it-doesnt

์™€! ๊ฑฐ์˜ 1๋…„ ํ›„!

๋ฒ„๊ทธ๋Š” ์—ฌ์ „ํžˆ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค! ๋ฏฟ์„ ์ˆ˜ ์—†๋‹ค......

์ˆ˜์ • ์‚ฌํ•ญ์€ #2656์— ๋ณ‘ํ•ฉ๋˜์—ˆ์ง€๋งŒ ์•„์ง ์ˆ˜์ •๋˜์ง€ ์•Š์€ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.

๊ทธ๋ƒฅ 0.18.0์œผ๋กœ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œ

ํ์‡„๋œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋ถˆํ–‰ํžˆ๋„ fetch ์€ ์ง„ํ–‰ ์ด๋ฒคํŠธ ๋˜๋Š” ์ทจ์†Œ ์ง€์›์ด ํ•„์š”ํ•œ ์ฆ‰์‹œ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

๋ฒ„์ „์„ ^0.18.1 ๊ณ ์ •ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

@techouse ๊ฐ€ ๋Œ€์•ˆ์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์€ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.

์ €๋Š” ํ•ญ์ƒ axios๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ์ˆ˜์ • ์‚ฌํ•ญ์ด ์˜ค๋žซ๋™์•ˆ ์กด์žฌํ–ˆ์œผ๋ฉฐ ์•„๋ฌด๋„ ์ด๋ฅผ ๋ฒ„์ „์— ํ• ๋‹นํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ƒ๊ฐ์€ ๋†๋‹ด์ผ ๋ฟ์ด๋ฏ€๋กœ ๊ณ„์† ์ง„ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜๋Š” ์‹ค์ œ๋กœ ์ œํ’ˆ์„ ๋ฐœ์ „์‹œํ‚ค๊ณ ์ž ํ•˜๋Š” ๋ˆ„๊ตฐ๊ฐ€๋ฅผ ๊ด€๋ฆฌํ•˜๋„๋ก ํ•˜์‹ญ์‹œ์˜ค.

์กด ์•Œ๋ฒ ๋ฅด๊ธฐ๋‹ˆ
๊ธฐ์ˆ  ์ด์‚ฌ
[email protected]
์˜ํ˜•. 802-323-4558 | ์”จ. 802-323-4558 | www.legacyresearch.com http://www.legacyresearch.com


๋ณด๋‚ธ ์‚ฌ๋žŒ: Evgeny [email protected]
๋ณด๋‚ธ ๋‚ ์งœ: 2020๋…„ 4์›” 23์ผ ๋ชฉ์š”์ผ ์˜ค์ „ 10:59:32
๋ฐ›๋Š” ์‚ฌ๋žŒ: axios /
์ฐธ์กฐ: Jon Alberghini [email protected] ; ๋Œ“๊ธ€ [email protected]
์ œ๋ชฉ: Re: [axios/axios] ์š”์ฒญ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ธ์Šคํ„ด์Šค ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๋ณ‘ํ•ฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(#2190).

@techouse https://github.com/techouse ๋Œ€์•ˆ์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์€ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ๋Œ“๊ธ€์„ ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub https://github.com/axios/axios/issues/2190#issuecomment-618445756 ์—์„œ ํ™•์ธํ•˜๊ฑฐ๋‚˜ https://github.com/notifications/unsubscribe-auth/AF6OZWIPREAQP5OGY437X3ROBJVJANFSM4HRPA๋ฅผ ๊ตฌ๋… ์ทจ์†Œ

์ˆ˜์ • ์‚ฌํ•ญ ์ด ๋ณ‘ํ•ฉ๋˜์–ด v0.20.0์—์„œ ๋ฆด๋ฆฌ์Šค๋  ์˜ˆ์ •์ด๊ธฐ ๋•Œ๋ฌธ์— ์ข…๋ฃŒ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ๋ฅผ ์ฐธ์กฐ

์—ฌ๊ธฐ์—๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณง ์ˆ˜์ •๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค!

+1. ์ผ๋‹จ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œ. ์œผ์Œ.

@khastation @raphaelbadawi @jonathanalberghini @techouse @AndyOGo

๋Œ€์•ˆ:

@mahnunchik
๋ถˆํ–‰ํžˆ๋„ fetch ๋Š” ์ง„ํ–‰ ์ด๋ฒคํŠธ ๋˜๋Š” ์ทจ์†Œ ์ง€์›์ด ํ•„์š”ํ•œ ์ฆ‰์‹œ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

@AndyOGo https://javascript.info/fetch-progress ์™€ ๊ฐ™์ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ‚ค ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ผ๋ถ€ ๋ถ„ํ•ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํƒˆ์ถœ๊ตฌ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ์ž„์‹œ ์ฝ”๋“œ๋Š” ํ™•์‹คํ•˜์ง€๋งŒ ์ด๋ฏธ ๋ณ‘ํ•ฉ์ด ์™„๋ฃŒ๋˜๊ณ  0.20.0์ด ์ง„ํ–‰ ์ค‘์ด๋ฏ€๋กœ ์ •๋ง ์ž์‹ ํ•ฉ๋‹ˆ๋‹ค. fetch() ๊ฒฝํ—˜์ด ์žˆ๋”๋ผ๋„ Axios๋Š” ์—ฌ์ „ํžˆ ๊ฐˆ ๊ธธ์ž…๋‹ˆ๋‹ค. Axios์—์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ƒํ™ฉ์ด ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ;-)

@mahnunchik ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค
๋‹ค์šด๋กœ๋“œ ๋ฐ ์—…๋กœ๋“œ ์— ๋Œ€ํ•œ ์ง„ํ–‰ ์ด๋ฒคํŠธ ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์ง€๋งŒ!

์งˆ๋ฌธ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @bdrtsky
์ฃผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ:

  • fetch ๋Š” XMLHttpRequest ๋น„ํ•ด ์—ฌ๋Ÿฌ ํšŒ๊ท€๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ๋Œ€๊ทœ๋ชจ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ์ฆ‰์‹œ ์ทจ์†Œ ๊ฐ€ ์ค‘์š”ํ•ด์ง‘๋‹ˆ๋‹ค.
  • ํŒŒ์ผ ์—…๋กœ๋”๋ฅผ ๊ตฌ์ถ•ํ–ˆ์œผ๋ฏ€๋กœ ๋ณด๋‹ค ์ •๊ตํ•œ ์ง„ํ–‰ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ˆ˜์ • ์‚ฌํ•ญ์ด ์ด๋ฏธ 0.20 ๋ฆด๋ฆฌ์Šค์— ํ• ๋‹น๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ˜„์žฌ 0.20์˜ ์ง€์ ์—์„œ ํšŒ๊ท€๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์•ˆ์ •์ ์ธ Axios๋ฅผ ๋‹ค์‹œ ์ถœ์‹œํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์—…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ง„ํ–‰์ค‘์ธ ์ž‘์—…์ด๋ฉฐ ์—…๋ฐ์ดํŠธ๋ฅผ ์œ„ํ•ด 0.20 ํ”„๋กœ์ ํŠธ๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

0.19.3 ํŒจ์น˜ ๋ฒ„์ „์— ๋„ฃ์–ด๋„ ๋˜๋‚˜์š”? ๋™์ผํ•œ ๋งˆ์ด๋„ˆ ๋ฆด๋ฆฌ์Šค์—์„œ ์ˆ˜์ •๋˜์ง€ ์•Š์œผ๋ฉด ๊ฒฐํ•จ์„ ๋‹ซ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค ...

๋‚˜๋Š” ๋‹ค์‹œ ์—ด์—ˆ์ง€๋งŒ ์šฐ๋ฆฌ๋Š” 0.19.3์„ ์ถœ์‹œํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. 0.18.0์—์„œ 0.19.2๋กœ์˜ ํšŒ๊ท€๋ฅผ ๋ชจ๋‘ ์ œ๊ฑฐํ•˜๋Š” 0.20 ๋ฆด๋ฆฌ์Šค์—์„œ ์•ˆ์ •์„ฑ์„ ์–ป๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•œ ์œ ์ผํ•œ ํ•ด๊ฒฐ์ฑ…์€ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ์• ๋งคํ•œ 0.20 ๋ฆด๋ฆฌ์Šค๋ฅผ ์–ธ์ œ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋™์•ˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ ํƒ€ ๋ฒ„์ „์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@adamreisnz ์ €๋Š” 0.20 ๋ฆด๋ฆฌ์Šค์—์„œ ์ž‘์—…ํ•˜๊ณ  ์žˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ์•ฝ 60๊ฐœ์˜ ์ด์ƒํ•œ pull ์š”์ฒญ์ด ์žˆ์Šต๋‹ˆ๋‹ค(120๊ฐœ์˜ ํ™€์ˆ˜์—์„œ ๊ฐ์†Œ). ์ผ๋ถ€๋Š” ์ด๋Ÿฌํ•œ pull ์š”์ฒญ์ด ์—ฌ์ „ํžˆ ๊ด€๋ จ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ํ™•์ธํ•˜๋Š” ๋ฐ ๋งค์šฐ ์˜ค๋ž˜๋˜๊ณ  ๋‹ค์–‘ํ•œ ์ž‘์—…์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ œ์‹œํ•˜์ง€ ์•Š๊ณ , ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๊ณ , ์ปดํŒŒ์ผ๋œ ํŒŒ์ผ์„ ํฌํ•จํ•˜์ง€ ์•Š๋Š” ๋“ฑ์˜ ์ž‘์—…์€ ๋…ธ๋™์ž…๋‹ˆ๋‹ค. ๊ธฐ๊ปํ•ด์•ผ 7์›”๊นŒ์ง€ ์‚ฌ์ „ ์ถœ์‹œ๋  ์ˆ˜ ์žˆ๋„๋ก ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. v1์—์„œ ์ž‘์—…ํ•˜๊ธฐ ์ „์— ๋ฐ”๋กœ ์–ป์„ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•˜๋ฏ€๋กœ ์ด ๋ฆด๋ฆฌ์Šค๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜์—ˆ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค.

์„ฑ๊ฐ€์‹  ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ํ•ด๊ฒฐ๋  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ผ๋ฉฐ ์˜ค๋žซ๋™์•ˆ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

v1 ์ž‘์—…์„ ํ•˜๊ธฐ ์ „์— ๋ฐ”๋กœ ํ™•์ธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

0.x ์—๋Š” 1.0.0 ์ด์ „์— ์ถ”๊ฐ€ ๋ฆด๋ฆฌ์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ถฉ๋ถ„ํ•œ ๊ณต๊ฐ„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค์— ๋ชจ๋“  ๊ฒƒ์„ ์ง‘์–ด๋„ฃ์„ ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค, ์ž ์žฌ์ ์ธ ์ƒˆ๋กœ์šด ๋ฒ„๊ทธ๋ฅผ ์ถ”์ ํ•˜๊ธฐ๊ฐ€ ๋” ์–ด๋ ค์›Œ์งˆ ๊ฒƒ์ด๋ผ๊ณ  ์ฃผ์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@markcarver ๋ฌผ๋ก  ๊ฐ€๋Šฅํ•˜์ง€๋งŒ Axios๋Š” ํ˜„์žฌ v1์ด ์—†๋Š” ์‹œํ—˜ํŒ์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์€ Axios๊ฐ€ ๊ณต๊ฐœ API๋ฅผ ์ถœ์‹œํ•˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค . v0.20.0์—์„œ๋Š” ์•ˆ์ •์„ฑ์„ ๊ฐ€์ ธ์˜ค๊ณ  0.19.x ๋ถ„๊ธฐ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ํšŒ๊ท€๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด ๋ถ„๊ธฐ์— ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‰ฝ๊ฒŒ ์Šน๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜์— ๋Œ€ํ•œ ์ž‘์—…์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ๋™์‹œ์— pull ์š”์ฒญ์˜ ๋ฐฑ๋กœ๊ทธ๋ฅผ ์ง€์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ค‘ ์ผ๋ถ€๋Š” 2017๋…„๋ถ€ํ„ฐ ์žˆ์—ˆ๋˜ 120๊ฐœ์˜ ์ด์ƒํ•œ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ด ๋ฌธ์ œ์— ๋„๋‹ฌํ•  ๊ฒƒ์ด๋ผ๊ณ  ์•ฝ์†ํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ์•„๋ฌด๋ฐ๋„ ๊ฐ€์ง€ ์•Š๊ณ  ๊ฐ€๋Šฅํ•œ ํ•œ Axios๋ฅผ ์ง€์›ํ•˜๊ณ  ์ž‘์—…ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”

์šฐ๋ฆฌ๊ฐ€ v0.18์—์„œ Axios๋ฅผ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•˜๊ณ  ์ž ๊ทธ๊ฑฐ๋‚˜ ์ž์ฒด(์œ ์ง€๋ณด์ˆ˜๋˜์ง€ ์•Š์€) ๋ฒ„์ „์„ ๋กค๋งํ•˜๊ณ  ์ˆ˜์ • ์‚ฌํ•ญ์„ ์ ์šฉํ•˜์ง€ ์•Š๋Š” ํ•œ ํŠน์ • ํ”Œ๋Ÿฌ๊ทธ์ธ(์˜ˆ: axios ์บ์‹œ ์–ด๋Œ‘ํ„ฐ)์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ขŒ์ ˆ๊ฐ์ด ๋งŽ์ด ์Œ“์ด๋Š” ๊ฒƒ ๊ฐ™์•„์š”. .

์ด๊ฒƒ์€ ๊ฝค ๋ช‡ ๋‹ฌ ๋™์•ˆ ์‚ฌ์‹ค์ด์—ˆ๊ณ  ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด ์ตœ์†Œํ•œ ๋ช‡ ๊ฐ€์ง€ ์ˆ˜์ • ์‚ฌํ•ญ์ด ๋ฆด๋ฆฌ์Šค๋˜๊ธฐ๋ฅผ ์—ด๋งํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ตœ์†Œํ•œ ์ตœ์‹  ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ˜„์žฌ ์ ์šฉ๋œ ์ˆ˜์ • ์‚ฌํ•ญ ์ค‘ ์ผ๋ถ€๋ฅผ ์ด์‹ํ•˜๊ณ  0.19.x๋ฅผ ๋ฆด๋ฆฌ์Šคํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ? ๋˜ ๋‹ค๋ฅธ 120๊ฐœ์˜ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•  ์˜ˆ์ •์ด๋ผ๋ฉด 0.20 ๋˜๋Š” v1์ด ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ์˜ค๋žœ ์‹œ๊ฐ„์„ ๊ธฐ๋‹ค๋ ค์•ผ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•˜๋ฉด ๊ฐœ์ธ์ ์œผ๋กœ ๋” ์ ์ง„์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

@adamreisnz ๋‚˜๋„ ์ฆ๋ถ„์„ ์„ ํƒํ•  ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•˜์ง€๋งŒ 0.18.x์—์„œ 0.19.x๋กœ ๋งŽ์€ ๋ถ€๋ถ„์ด ๊นจ์กŒ๊ณ  ์•„์ด๋””์–ด๋Š” 0.20.0 ๋ฆด๋ฆฌ์Šค๋ฅผ ๊ทธ ๋ฆด๋ฆฌ์Šค์—์„œ ๊ฐ€์žฅ ์‹œ๊ธ‰ํ•œ ๊ฒƒ๋“ค๋กœ ์•ˆ์ •๋˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์—ˆ์Šต๋‹ˆ๋‹ค. 60๊ฐœ์˜ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋งŒ ๋‚จ์•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ์ด๋ฏธ ์ฒ˜๋ฆฌํ–ˆ๊ณ  ๊ทธ 60๊ฐœ ์ค‘ ์ผ๋ถ€๋Š” wip ๋˜๋Š” v1 ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์ด๋ฒˆ ๊ธฐํšŒ์— ๋ฐ”๋กœ์žก์•„ ๋” ๋งŽ์€ ์ผ์„ ์ผ์œผํ‚ค๊ณ  ๊นจ๋œจ๋ฆฌ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ด ์‹œ์ ์—์„œ ๋Œ€์ฒด๋กœ ๊ฐ€๋Šฅํ•œ ์ผ์„ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋นŒ๋“œ๋Š” ๊ณต๊ฐœ๋˜๊ธฐ ์ „์— ๊ด‘๋ฒ”์œ„ํ•œ ํ…Œ์ŠคํŠธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ขŒ์ ˆ๊ฐ์„ ๋Š๋ผ๊ธด ํ•˜์ง€๋งŒ ์•ˆ์ •์ ์ด์ง€ ์•Š๊ณ  ์ˆ˜๋งŽ์€ ํšŒ๊ท€๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์ฆ๋ถ„ ์ˆ˜์— ๊ด€๊ณ„์—†์ด ๋ฆด๋ฆฌ์Šคํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์—ฌ์ „ํžˆ 200~๊ฐœ ์ด์ƒ์˜ ๋ฌธ์ œ์™€ 60~๊ฐœ์˜ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๊ฐ€ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ๋งค์šฐ ๋ถ€์„œ์ง„ Axios, ์–ด์ฉŒ๋ฉด ํ›จ์”ฌ ๋” ๋ถ€์„œ์งˆ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์ €๋Š” ํ˜„์žฌ ๋ฆด๋ฆฌ์Šค๋ฅผ ์ œ์–ดํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ง€์›์„ ์‹œ์ž‘ํ–ˆ์„ ๋•Œ ํšŒ๊ท€ ๋ฐ ๊ฐ€์žฅ ์‹œ๊ธ‰ํ•œ ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์ด์ „์— ์ž‘๋™ํ–ˆ๋˜ ๋‹ค๋ฅธ ๊ฒƒ์„ ์†์ƒ์‹œํ‚ค์ง€ ์•Š๋Š” ๋นŒ๋“œ๋ฅผ ํ•จ๊ป˜ ๋งŒ๋“ค๊ฒ ๋‹ค๊ณ  ์•ฝ์†ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์„ ๊ฝค ์ง„์ง€ํ•˜๊ฒŒ ๋ฐ›์•„๋“ค์ด๊ณ  ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ณ  ์‹ถ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋„์›€์ด ๋˜๋Š” ๊ฒฝ์šฐ ๋ณด์•ˆ ๋ฌธ์ œ ๋“ฑ์ด ์ˆ˜์ •๋œ 0.18.x ๋ฆด๋ฆฌ์Šค๋ฅผ ์‹œ๋„ํ•˜๊ณ  ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋Ÿฌ๋‚˜ ๋„์›€์ด ๋˜๋Š” ๊ฒฝ์šฐ ๋ณด์•ˆ ๋ฌธ์ œ ๋“ฑ์ด ์ˆ˜์ •๋œ 0.18.x ๋ฆด๋ฆฌ์Šค๋ฅผ ์‹œ๋„ํ•˜๊ณ  ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ •๋ง ๋Œ€๋‹จํ•ฉ๋‹ˆ๋‹ค.

์ถ”์‹ : ๋งŽ์€ ์›น ํ”„๋กœ์ ํŠธ์— ๋ณต์žกํ•œ ํŒจํ‚ค์ง€๋ฅผ ์œ ์ง€ ๊ด€๋ฆฌํ•˜์—ฌ ๊ท€ํ•˜๊ฐ€ ํ•˜๊ณ  ์žˆ๋Š” ๋…ธ๊ณ ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๐Ÿ˜Š

๊ทธ๋Ÿฌ๋‚˜ ๋„์›€์ด ๋˜๋Š” ๊ฒฝ์šฐ ๋ณด์•ˆ ๋ฌธ์ œ ๋“ฑ์ด ์ˆ˜์ •๋œ 0.18.x ๋ฆด๋ฆฌ์Šค๋ฅผ ์‹œ๋„ํ•˜๊ณ  ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์˜ˆ, ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ํ™•์‹คํžˆ ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด ํ•ญ๋ชฉ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐ ๋„์›€์ด ํ•„์š”ํ•˜๋ฉด ๊ธฐ๊บผ์ด ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ฒ ๋‹ค๊ณ  ์•Œ๋ ค์ฃผ์„ธ์š”.

@adamreisnz ์ด ๋ถ„๊ธฐ๋ฅผ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ: 0.20.0-beta.1

์˜ˆ, ์ด๋ฒˆ ์ฃผ๋ง์— ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ ์ค‘ ํ•˜๋‚˜๋ฅผ ์œ„ํ•ด ํ•ด๋‹น ์ง€์ ์œผ๋กœ ์ „ํ™˜ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

@jasonsaayman ์ง€๊ธˆ๊นŒ์ง€ ๋„ˆ๋ฌด ์ข‹์•˜์–ด, 0.20.0์ด ์ž˜ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค ๐Ÿ‘

์ด์ œ ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ์ƒˆ ๋ฆด๋ฆฌ์Šค์—์„œ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•œ๋‹ค๋Š” ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์€ ํ›„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

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