- Pregunta -¿Cómo accedo a los datos de REST API PUT de PHP en el lado del servidor?
estoy empezando a cabo con la API REST y estoy haciendo bastante confusa.
Esto es lo que mi PHP cRUL del lado del cliente parece para un PUT.
case 'PUT':
curl_setopt($handle, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($handle, CURLOPT_POSTFIELDS, $data);
break;
Ahora, cuando miro en el servidor de mi $ _SERVER [ 'REQUEST_METHOD'] muestra PUT, pero mi pregunta es ¿cómo puedo obtener los datos $ envié con CURLOPT_POSTFIELDS.
Todo lo que tengo que hacer es enviar los $ datos enviados con una solicitud PUT a la siguiente línea. Como
$value = $data['curl_data'];
He visto tanto desorden en este tema que me está dando dolor de cabeza. Parece tan fácil en el lado del cliente php, pero nadie tiene respuestas que funcionen para el lado del servidor php.
¡Gracias por cualquier ayuda!
- respuesta (después de ayuda y la tarea) -
Soy nuevo así que no puedo responder a mi propia pregunta hasta después de 8 horas ... raro :)
Vale Después de trabajar con las grandes personas de aquí, debo decir que encontramos la respuesta. Me estoy pateando por ser tan fácil, al mismo tiempo era confuso.
curl_setopt($handle, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($handle, CURLOPT_POSTFIELDS, http_build_query($data));
El primer cambio (arriba) Tuve que agregar http_build_query() alrededor de $ data. Esto tomó mis datos de una matriz a una cadena amistosa de la url.
A continuación tuve que agregar.
parse_str(file_get_contents('php://input'), $put);
Ahora puedo hacer cosas como $ put ['data'].
La respuesta que dio PaulPRO arriba funciona para obtener los datos de la misma manera que file_get_contents() lo hizo con menos líneas. Nos quedamos atrapados tratando de encontrar la forma de analizar los datos, que fue donde mi falta de http_build_query() que había visto en otro sitio se puso en juego.
Así es como funciona todo.
- Los datos se ponen en una matriz normal.
- http_build_query() lo convierte en una bonita cadena casi como GET.
- file_get_contents() lo transporta del cliente al servidor.
- parse_str() luego lo vuelve a convertir en una matriz.
Estoy viendo un montón de mensajes sobre el uso de PUT para enviar archivos. Puedo ver cómo funcionaría esto, pero por lo que leí en todo este proceso REST fue que PUT es para actualizar los datos ya que la publicación es para crear datos. Quizás estoy equivocado. ¿Me estoy perdiendo de algo?
Tal vez [estos] (http://blog.steveklabnik.com/2011/07/03/nobody-understands-rest-or-http.html) [enlaces] (http://quandyfactory.com/blog/65 /designing_a_restful_web_application#toc_5.3) te ayudará a comprender mejor algunas de las peculiaridades de REST. – nevvermind