He hecho varias apis en djangorestframework. Esto podría probar tanto con la forma html de la API como con curl en la línea de comandos.carga la imagen al campo de imagen con djangorestframework usando json y prueba esto con CURL
Ahora tengo una API para un modelo con uno de los campos y un campo de imagen.
No puedo entender qué comando curl usar. Utilizando la sintaxis he usado antes de las acciones POST fot en formato JSON, sería:
curl -X POST -S -H 'Content-Type: application/json' -u "username:password" --data-binary '{"otherfields":"something", "photo":"/home/michel/test.jpg"}' 127.0.0.1:8000/api/v1/
pero en este caso la foto no se guardará y se deja en blanco (la foto es un campo opcional)
agregando -T /home/michel/test.jpg
Aparece un mensaje de error que dice 127.0.0.1:800/api/v1/test.jpg no existe como una url.
En la forma html de prueba de djangorestframework, todo funciona bien.
El uso de la opción -F
, se dice que sólo puedo hacer 1 solicitud a la vez ... que también eliminó el tipo de datos a partir de datos binario
¿Puede alguien ayudarme cómo hacer este post rizo tanto con el imagen y los otros datos en json en 1 comando.
¿Qué estoy haciendo mal? '$ curl -X POST -S -H" Accept-Language: en-es "-H 'Aceptar: application/json' \ -F" name = Avatar "\ -F" username = avatar "\ -F "contraseña = A1234567" \ -F "[email protected]" \ -F "token = 748e14e32ce165d06365d3c9a00cee3f" \ -F "avatar = @/home/moreno/Pictures/avatar004.jpg; type = image/jpg "127.0.0.1: 8000/api/v1/users/register /' response 400 '{" username ": [" Este campo es obligatorio. "]," password ": [" Este campo es obligatorio. "]" name ": [" Este campo es obligatorio. "]," avatar ": [" No se envió ningún archivo. "]," email ": [" Este campo es obligatorio ".]}' – Moreno
falta uno de los destinatarios campos. Necesita usar -u delante del nombre de usuario, no -F (a menos que también sea un campo en la API, que necesita usar ambos) –
@ michel-iamit gracias. Decidí enviar las imágenes como un campo base64, por ejemplo: 'curl -H" Autorización: JWT ey ... 5U "-d" name = Nombre de usuario y nombre de usuario = usuario & email = [email protected] & contraseña = A1234567 "--data-urlencode ' avatar = '"$ (base64 ~/Pictures/avatar004.jpg)"' '--data-urlencode' image = '"$ (base64 ~/Pictures/avatar001.jpg)"' '--data-urlencode' picture = '"$ (base64 ~/Pictures/577383.jpg)"' 'http: // localhost: 8000/api/v1 // register/' – Moreno