example - enviar datos post curl php
Cómo usar el verbo PATCH con curl (5)
Estaba tratando de PATCHAR a un recurso de sabrosa con una solicitud de curl similar. Para mí, el problema era que los datos tenían que pasarse así:
curl --data ''{"field": "new_value"}'' -X PATCH http://127.0.0.1:8000/api/v1/resource_uri/pk/
Observe cómo lo que paso a la bandera de datos está dentro de lo que parece un diccionario pasado como una cadena, en lugar de poner el parametro directamente como en la pregunta. Por supuesto, un param también funciona como ya se ha respondido, pero espero que esto ayude a algunas personas.
Estoy tratando de hacer una llamada PATCH a un servidor. Estoy usando el siguiente comando:
curl --data status=closed -X PATCH https://api.viafoura.com/v2/dev.viafoura.com/pages/7000000043515
¿Es esta la forma correcta de enviar la solicitud PATCH? Me aparece un error que dice que no hay un conjunto de parámetros de estado. Supongo que --data es solo para solicitud POST y, por lo tanto, el servidor no encuentra el parámetro de estado.
Esta es la respuesta (FYI):
{"http_status":400,"error":"Parameter validation errors","validation_errors":{"status":{"error":"Request missing status parameter."}}}
Puede encontrar documentación sobre este servicio here .
Este es el formato que debes usar:
curl --request PATCH https://api.viafoura.com/v2/dev.viafoura.com/pages/7000000043515?status=closed
El uso de -X
no parece funcionar en términos de enviar una solicitud de PATCH, debes usar --request PATCH
. Además, esa API parece querer el parámetro de status
como un parámetro de consulta en la url, no como parte del cuerpo de PATCH.
En este punto, el servidor devolverá un error 401: "Debe iniciar sesión para modificar la configuración de la página". Supuestamente, debes iniciar sesión primero con algo como esto:
curl --request POST "https://api.viafoura.com/v2/dev.viafoura.com/users/login?password=TeNn!sNum8er1&[email protected]"
He usado las credenciales de su documentación en ese ejemplo, que pensé que funcionaría en su servidor de desarrollo, pero actualmente está devolviendo un error de "Contraseña incorrecta".
Sin embargo, si tiene credenciales válidas, debe obtener una cookie de sesión que luego puede usar para autenticar su solicitud PATCH.
Esto es algo que funcionó para mí en mi aplicación de muestra.
curl --data ''id=57&equipment_type_name=57 edited'' -X PATCH http://localhost:5009/equipment-type/update
{ "info": "Equipment type updation.", "response": { "status": "success", "message": "updateEquipmentType", "result": { "data": [ [ { "update_status": 1 } ], { "fieldCount": 0, "affectedRows": 0, "insertId": 0, "serverStatus": 2, "warningCount": 0, "message": "", "protocol41": true, "changedRows": 0 } ] } } }
Tu línea de comando debería funcionar. Como puede ver en el PATCH RFC5789 , la solicitud HTTP es similar a lo que curl envía (use --trace-ascii para ver la comunicación curl completa). Es posible que desee cambiar el tipo de contenido (utilizando --header ).
El mencionado parámetro de estado faltante probablemente se refiere a los contenidos en el cuerpo de la solicitud. Es posible que los datos de "estado = cerrado" posiblemente no estén en el formato correcto (¿JSON?) O que estén incompletos.
(Parece que pretendes incluir un enlace a la API pero no hay ningún enlace allí).
Una forma alternativa es la siguiente, esto es a través de una llamada POST
curl --data status=closed https://api.viafoura.com/v2/dev.viafoura.com/pages/7000000043515?verb=PATCH
Supongo que esta no es una manera general y solo se aplica a esta instancia específica.