Dalam aplikasi Ruby on Rails saya, saya mencoba mengunggah gambar melalui klien POSTMAN REST dalam format Base64 . Ketika saya POST gambar saya mendapatkan 406 Tidak Respons Diterima . Ketika saya memeriksa database saya, gambar itu ada di sana dan berhasil disimpan.
Apa alasan untuk kesalahan ini, adakah yang perlu saya tentukan di header saya?
Permintaanku:
URL --- http://localhost:3000/exercises.json
Tajuk:
Content-Type - application/json
Data mentah:
{
"exercise": {
"subbodypart_ids": [
"1",
"2"
],
"name": "Exercise14"
},
"image_file_name": "Pressurebar Above.jpg",
"image":"******base64 Format*******"
}
Jawaban:
Operasi Anda tidak gagal.
Layanan backend Anda mengatakan bahwa jenis respons yang dikembalikan tidak disediakan di header Terima HTTP dalam permintaan Klien Anda.
Ref: http://en.wikipedia.org/wiki/List_of_HTTP_header_fields
http://en.wikipedia.org/wiki/HTTP_status_code -> 406
sumber
406 terjadi ketika server tidak dapat merespons dengan header terima yang ditentukan dalam permintaan. Dalam kasus Anda tampaknya aplikasi / json untuk respons mungkin tidak dapat diterima oleh server.
sumber
Anda menyebutkan bahwa Anda menggunakan Ruby on Rails sebagai backend. Anda tidak mengeposkan kode untuk metode yang relevan, tetapi tebakan saya terlihat seperti ini:
Ubah ke:
Dan itu akan menyelesaikan masalah Anda. Ini bekerja untuk saya :)
sumber
Anda juga dapat menerima respons 406 ketika cookie yang tidak valid disimpan atau direferensikan di browser - misalnya, ketika menjalankan server Rails dalam mode Dev secara lokal.
Jika Anda menjalankan dua proyek berbeda pada port yang sama, browser mungkin merujuk cookie dari sesi localhost yang berbeda.
Ini terjadi pada saya ... membuat saya tersandung sebentar. Mencari di browser> Mode Pengembang> Jaringan menunjukkannya.
sumber
"Kadang-kadang" ini dapat berarti bahwa server memiliki kesalahan internal, dan ingin merespons dengan pesan kesalahan (mis: 500 dengan muatan JSON) tetapi karena header permintaan tidak mengatakan itu menerima JSON, ia malah mengembalikan 406. Sosok pergi. (dalam hal ini: spring boot webapp).
Dalam hal ini, operasi Anda gagal. Tetapi pesan kegagalan itu dikaburkan oleh orang lain.
sumber
Dalam kasus saya, saya menambahkan:
menyelesaikan masalah saya sepenuhnya.
sumber
sumber
Jika Anda menggunakan 'request.js', Anda dapat menggunakan yang berikut:
sumber
Dalam kasus saya untuk API di .NET-Core, api diatur untuk bekerja dengan XML (secara default diatur ke respons dengan JSON), jadi saya menambahkan anotasi ini di Controller saya:
Terima kasih telah menempatkan saya di jalan!
sumber