Rails: POST ke API Endpoint memiliki Parameter Kosong

Dibuat pada 24 Mar 2017  ·  3Komentar  ·  Sumber: rails/rails

Params disetel tetapi payload permintaan hilang.

[1] pry(#<Api::RegistrationsController>)> params
=> <ActionController::Parameters {"format"=>"json", "controller"=>"api/registrations", "action"=>"create"} permitted: false>
[2] pry(#<Api::RegistrationsController>)> params.require(:data)
ActionController::ParameterMissing: param is missing or the value is empty: data
Request Headers

Minta Header

Host: test.lvh.me:3000
Connection: keep-alive
Content-Length: 1038
Accept: application/vnd.api+json
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
Origin: http://test.lvh.me:4200
Content-Type: application/vnd.api+json
Referer: http://test.lvh.me:4200/register/individual-academics
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8

Muatan Mentah
{"data":{"attributes":{"first-name":"Test","last-name":"User","email":"[email protected]"}}}

Pengontrol

      def registration_params
        params.require(:data).permit({
          attributes: [
            'first-name',
            'last-name',
            'email',
            ]
        })
      end

Jika saya mengatur aplikasi yang sama menggunakan Rails 4.2.6/Ruby 2.3.3, ini bekerja dengan sempurna tanpa perubahan dalam muatan, jadi sepertinya ada sesuatu dengan cara Rails 5 menangani permintaan, mungkin?

Saya juga harus menyebutkan bahwa URL sumbernya adalah test.lvh.me:4200 (aplikasi bara) ke API Rails test.lvh.me:3000, jadi CORS dapat berperan di sini dalam menghapus params? Saya tidak menerima kesalahan apa pun karena tajuk tampak benar dan CORS diatur di sini untuk mengizinkan Asal apa pun melalui Rack::Cors middleware.

Versi rel :
Rel 5.0.1
versi rubi :
Ruby 2.3.3

actionpack needs work

Komentar yang paling membantu

Anda perlu menambahkan baris berikut ke config/initializers/mime_types.rb
Mime::Type.register "application/vnd.api+json", :json

Semua 3 komentar

Halo, silakan buat kasus uji gagal yang dapat dieksekusi menggunakan https://github.com/rails/rails/blob/master/guides/bug_report_templates/action_controller_gem.rb sebagai templat sehingga orang lain dapat mereproduksi dan membantu Anda memecahkan masalah.

Anda perlu menambahkan baris berikut ke config/initializers/mime_types.rb
Mime::Type.register "application/vnd.api+json", :json

Hanya ingin menindaklanjuti @vipulnsward dan @ngn01 sangat menghargai tanggapan ini. Bekerja dengan sukses, dan membantu saya memahami hubungan di antara semuanya.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat