Axios: рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдореЗрдВ рдмреЗрд╕рдпреВрдЖрд░рдПрд▓ рд╕реЗрдЯ рдХрд░реЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдХреЛ рдирд┐рд░реНрдорд┐рдд 9 рдЬреВрди 2017  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: axios/axios

рд╕рд╛рд░рд╛рдВрд╢

рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдореЗрдВ рд╕реЗрдЯ рдмреЗрд╕рдпреВрдЖрд░рдПрд▓ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

const service = axios.create({
  baseURL: 'http://localhost/'
});

service.interceptors.request.use(config => {

  config.baseURL = 'dd'
  console.log(config.url) // output :  http://localhost/././../

  return config;
}, error => {
  // Do something with request error
  console.error(error); // for debug
  Promise.reject(error);
})

рд╕рдВрджрд░реНрдн

  • рдЕрдХреНрд╖реАрдп рд╕рдВрд╕реНрдХрд░рдг: рдЙрджрд╛рд╣рд░рдг: v0.16.2
  • рдкрд░реНрдпрд╛рд╡рд░рдг: рдЙрджрд╛рд╣рд░рдг: рдиреЛрдб vv8.0.0, рдХреНрд░реЛрдо 59.0.3071.86, macOS 10.12

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд┐рдпрд╛ред рдпрд╣ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рд╕реЗ рдЕрдзрд┐рдХ рдПрдХ рд╡реИрдЪрд╛рд░рд┐рдХ рдореБрджреНрджрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмреЗрд╕рдпреВрдЖрд░рдПрд▓ рд╕реЗрдЯ рдХрд░рдирд╛ "рдЗрд╕реЗ рд╣рд░ рдЕрдиреБрд░реЛрдз рдкрд░ рдкреНрд░реАрдкреЗрдб рдХрд░реЗрдВ" рдХрд╣рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ, рдЬреЛ рд╣рд░ рдЕрдиреБрд░реЛрдз рдкрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╕рдордп рд╡реНрдпрд░реНрде рд▓рдЧрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рд╕рд╢рд░реНрдд рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдорд▓рд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ:

axios.interceptors.request.use((config) => {
  return getAge()
  .then((age) => {
    if(age < 10){ config.baseURL = 'https://young.com' }
    else { config.baseURL = 'https://young.com' }
  })

рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯ рдХрд░рдирд╛:
axios.defaults.baseURL = 'https://example.com';
рдЬреИрд╕рд╛ рдХрд┐ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдкрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ:
axios.post('/extra', { baseURL: 'https://example.com' })

рджреЛрдиреЛрдВ рд╣реА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ 'url' рдлрд╝реАрд▓реНрдб ' https://example.com/extra ' рд╣реИ, рд▓реЗрдХрд┐рди рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдореЗрдВ рдмреЗрд╕рдпреВрдЖрд░рдПрд▓ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдХреЗрд╡рд▓ 'config.baseURL' рдЕрдкрдбреЗрдЯ рд╣реЛрддрд╛ рд╣реИред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐, рдЖрдк рд╕рдЪрдореБрдЪ рдЙрд╕ рдлрд╝реАрд▓реНрдб рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдпрд╣ рдпреВрдЖрд░рдПрд▓ рдлрд╝реАрд▓реНрдб рдХреЛ рднреА рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдХрдо рд╕реЗ рдХрдо рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЕрдзрд┐рдорд╛рдирддрдГ рдмрдбрд╝реЗ рдмреЛрд▓реНрдб рд▓реЗрдЯрд░рд┐рдВрдЧ рдореЗрдВ) рдЬреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдореЗрдВ рдмреЗрд╕рдпреВрдЖрд░рдПрд▓ рд╕реЗрдЯ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЕрдиреБрдкрдпреЛрдЧреА/рдЕрдиреБрд╢рдВрд╕рд┐рдд рдирд╣реАрдВред

@ Baoyx007 рдЖрдк рд╣рдореЗрд╢рд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ 'url' рдорд╛рди рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ

service.interceptors.request.use(config => {
  //config.baseURL = 'dd'
    config.url = BASE_URL + config.url
  return config;

рдпрд╛ рд╣рд░ рдЕрдиреБрд░реЛрдз рдкрд░

axios.get('/hello', { baseURL: BASE_URL })

рдиреЛрдб v7.10.0
рдПрдХреНрд╕рд┐рдпреЛрд╕ v0.16.12

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореБрдЭреЗ рджреЗрдЦреЛ рдХрд╕реНрдЯрдо рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдбрд┐рдлрд╝реЙрд▓реНрдЯ axios.all рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ #948 рдореЗрд░рд╛ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдп рдХреЗрд╡рд▓ рд╕рднреА рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ

рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд┐рдпрд╛ред рдпрд╣ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рд╕реЗ рдЕрдзрд┐рдХ рдПрдХ рд╡реИрдЪрд╛рд░рд┐рдХ рдореБрджреНрджрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмреЗрд╕рдпреВрдЖрд░рдПрд▓ рд╕реЗрдЯ рдХрд░рдирд╛ "рдЗрд╕реЗ рд╣рд░ рдЕрдиреБрд░реЛрдз рдкрд░ рдкреНрд░реАрдкреЗрдб рдХрд░реЗрдВ" рдХрд╣рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ, рдЬреЛ рд╣рд░ рдЕрдиреБрд░реЛрдз рдкрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╕рдордп рд╡реНрдпрд░реНрде рд▓рдЧрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рд╕рд╢рд░реНрдд рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдорд▓рд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ:

axios.interceptors.request.use((config) => {
  return getAge()
  .then((age) => {
    if(age < 10){ config.baseURL = 'https://young.com' }
    else { config.baseURL = 'https://young.com' }
  })

рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯ рдХрд░рдирд╛:
axios.defaults.baseURL = 'https://example.com';
рдЬреИрд╕рд╛ рдХрд┐ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдкрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ:
axios.post('/extra', { baseURL: 'https://example.com' })

рджреЛрдиреЛрдВ рд╣реА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ 'url' рдлрд╝реАрд▓реНрдб ' https://example.com/extra ' рд╣реИ, рд▓реЗрдХрд┐рди рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдореЗрдВ рдмреЗрд╕рдпреВрдЖрд░рдПрд▓ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдХреЗрд╡рд▓ 'config.baseURL' рдЕрдкрдбреЗрдЯ рд╣реЛрддрд╛ рд╣реИред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐, рдЖрдк рд╕рдЪрдореБрдЪ рдЙрд╕ рдлрд╝реАрд▓реНрдб рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдпрд╣ рдпреВрдЖрд░рдПрд▓ рдлрд╝реАрд▓реНрдб рдХреЛ рднреА рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдХрдо рд╕реЗ рдХрдо рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЕрдзрд┐рдорд╛рдирддрдГ рдмрдбрд╝реЗ рдмреЛрд▓реНрдб рд▓реЗрдЯрд░рд┐рдВрдЧ рдореЗрдВ) рдЬреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдореЗрдВ рдмреЗрд╕рдпреВрдЖрд░рдПрд▓ рд╕реЗрдЯ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЕрдиреБрдкрдпреЛрдЧреА/рдЕрдиреБрд╢рдВрд╕рд┐рдд рдирд╣реАрдВред

@ Baoyx007 рдЖрдк рд╣рдореЗрд╢рд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ 'url' рдорд╛рди рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ

service.interceptors.request.use(config => {
  //config.baseURL = 'dd'
    config.url = BASE_URL + config.url
  return config;

рдпрд╛ рд╣рд░ рдЕрдиреБрд░реЛрдз рдкрд░

axios.get('/hello', { baseURL: BASE_URL })

рдиреЛрдб v7.10.0
рдПрдХреНрд╕рд┐рдпреЛрд╕ v0.16.12

#950 . рдореЗрдВ рдлрд┐рдХреНрд╕реНрдб

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

altruisticsoftware picture altruisticsoftware  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jdpagley picture jdpagley  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

reggi picture reggi  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

helmus picture helmus  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

varmeh picture varmeh  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ