POST запрос с body (email, pass)

Хочу сделать страницу авторизации по Email и паролю, запрос отправлять по API “Авторизация” Нужно сделать POST запрос по url (допустим будет https://shop-shop/api/v1/disp/login), где передавать поля (email, password) хранить токет в localStorage и получать в ответ обьект

Я сделал форму где есть метод login() Форма имеет два поля связаных через v-model.

Заранее спасибо.


Ответы (1 шт):

Автор решения: Жека Диулин

Знаю как минимум два способа:

  • XmlHttpRequest
  • Axios

Первый способ - это для древних греков. Он уже реализован и не требует дополнительных пакетов, но громоздкий и неудобный.

Второй способ:

  • Устанавливаешь axios $ npm install axios
  • Импортируешь его import axios from 'axios'
  • Строишь запрос, который возвращает промис.

Можно написать твой action так:

export function login ({ commit }, params) {
  return axios.post('url/login', params)
    .then((data) => {
      commit('setUser', data) 
    })
    .catch((e) => {
      commit('setUser', null)
    })
}

А можно так:

export async function login ({ commit }, params) {
  try {
    const data = await axios.post('url/login', params)
    commit('setUser', data)
  } catch(e) {
    commit('setUser', null)
  }
}

Кстати, тело запроса с email и password - это вот тот самый объект params. Внешний код выглядит примерно так:

store.dispatch('login', {
  email: this.email,
  password: this.password
})
→ Ссылка