En mi aplicación Ruby on Rails intenté cargar una imagen a través del cliente POSTMAN REST en formato Base64 . Cuando PUBLICO la imagen obtengo una respuesta 406 no aceptable . Cuando revisé mi base de datos, la imagen estaba allí y se guardó con éxito.
¿Cuál es la razón de este error? ¿Hay algo que deba especificar en mi encabezado?
Mi petición:
URL --- http://localhost:3000/exercises.json
Encabezamiento:
Content-Type - application/json
Datos sin procesar:
{
"exercise": {
"subbodypart_ids": [
"1",
"2"
],
"name": "Exercise14"
},
"image_file_name": "Pressurebar Above.jpg",
"image":"******base64 Format*******"
}
json
rest
http
http-response-codes
http-status-code-406
Cibernético
fuente
fuente
Respuestas:
Su operación no falló.
Su servicio de fondo dice que el tipo de respuesta que está devolviendo no se proporciona en el encabezado Aceptar HTTP en su solicitud de Cliente.
Ref: http://en.wikipedia.org/wiki/List_of_HTTP_header_fields
http://en.wikipedia.org/wiki/HTTP_status_code -> 406
fuente
406 ocurre cuando el servidor no puede responder con el encabezado de aceptación especificado en la solicitud. En su caso, parece que application / json para la respuesta puede no ser aceptable para el servidor.
fuente
Mencionaste que estás usando Ruby on Rails como backend. No publicó el código para el método relevante, pero supongo que se parece a esto:
Cámbielo a:
Y resolverá tu problema. Funcionó para mí :)
fuente
También puede recibir una respuesta 406 cuando se almacenan o se hace referencia a cookies no válidas en el navegador, por ejemplo, cuando se ejecuta un servidor Rails en modo Dev localmente.
Si ejecutó dos proyectos diferentes en el mismo puerto, el navegador podría hacer referencia a una cookie de una sesión localhost diferente.
Esto me ha pasado ... me hizo tropezar por un minuto. Buscando en el navegador> Modo desarrollador> Red lo mostró.
fuente
"A veces" esto puede significar que el servidor tenía un error interno y quería responder con un mensaje de error (por ejemplo, 500 con carga JSON), pero dado que los encabezados de la solicitud no decían que aceptaba JSON, en su lugar, devuelve un 406. Imagínate. (en este caso: spring boot webapp).
En cuyo caso, su operación falló. Pero el mensaje de fracaso fue oscurecido por otro.
fuente
En mi caso, agregué:
Resuelto mi problema por completo.
fuente
fuente
Si está usando 'request.js', puede usar lo siguiente:
fuente
En mi caso para una API en .NET-Core, la API está configurada para funcionar con XML (de manera predeterminada está configurada para responder con JSON), así que agrego esta anotación en mi controlador:
¡Gracias por ponerme en el camino!
fuente