Пост-запрос Axios работает без параметров, если параметры включены - PullRequest
0 голосов
/ 19 января 2019

Я создаю приложение Rails 5.2.1 с Vue.js 2. Я интегрировал бэкэнд с внешним интерфейсом, создал API, но возникает проблема, когда я пытаюсь отправить POST-запрос в свой бэкэнд через axios. У меня есть v1/users/me/create конечная точка винограда, которая выглядит следующим образом:

# frozen_string_literal: true

module API
  module V1
    module Users
      module Me
        class Create < Base
          namespace :create do
            desc "Create a user"
            params do
              optional :email, type: String, desc: "User's email address"
              optional :first_name, type: String, desc: "User's first name"
              optional :last_name, type: String, desc: "User's last name"
              optional :password, type: String, desc: "User's password"
              optional :password_confirmation, type: String, desc: "User's password confirmation"
            end
            post do
              # user will be created here
            end
          end
        end
      end
    end
  end
end

Я хочу отправить запрос POST через axios, и код выглядит следующим образом:

export default {
  name: 'SignUp',
  data () {
    return {
      email: '',
      error: false,
      first_name: '',
      last_name: '',
      password: '',
      password_confirmation: '',
      buttonText: 'Sign Up'
    }
  },
  methods: {
    signUp () {
      this.buttonText = 'Loading...'
      let data = { email: this.email, first_name: this.first_name, last_name: this.last_name, password: this.password, password_confirmation: this.password_confirmation }
      this.$http.post('/users/me/create', data)
        .then(response => {
          // do something
        })
        .catch(response => {
          // do something
        })
    }
  }
}

Когда я отправляю запрос без параметров (переменная data), запрос проходит, и я могу получить к нему доступ через свой бэкэнд - конечно, без параметров. Однако, когда я отправляю его с параметрами, он сразу переходит в блок catch, а бэкэнд возвращает следующую ошибку:

Started POST "/api/v1/users/me/create" for 127.0.0.1 at 2019-01-19 13:40:56 +0100
   (1.1ms)  SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
  ↳ /Users/lszmelc/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.2/lib/active_record/log_subscriber.rb:98

ArgumentError (wrong number of arguments (given 5, expected 2)):

grape-active_model_serializers (1.3.2) lib/grape-active_model_serializers/formatter.rb:5:in `call'

В чем может быть причина этого?

...