¿Cómo puedo acceder a los parámetros de cadena de consulta para las solicitudes que he enviado manualmente en Laravel 4?
Estoy escribiendo una API simple y construyendo una aplicación web simple sobre esta API.
Como quiero "consumir mi propia API" directamente, primero busqué en Google y encontré esta respuesta en StackOverflow que responde perfectamente a mi pregunta inicial:Consumiendo mi propia API de Laravel
Ahora, esto funciona muy bien, puedo acceder a mi API haciendo algo como:
$request = Request::create('/api/cars/'.$id, 'GET');
$instance = json_decode(Route::dispatch($request)->getContent());
¡Esto es genial! Pero, mi API también le permite agregar un opcionalcampos parámetro a la cadena de consulta GET para especificar atributos específicos que deben devolverse, como este:
http://cars.com/api/cars/1?fields=id,color
Ahora la forma en que realmente manejo esto en la API es algo como esto:
public function show(Car $car)
{
if(Input::has('fields'))
{
//Here I do some logic and basically return only fields requested
....
...
}
Supongo que podría hacer algo similar a lo que hice antes con el enfoque sin parámetros de cadena de consulta, algo como esto:
$request = Request::create('/api/cars/' . $id . '?fields=id,color', 'GET');
$instance = json_decode(Route::dispatch($request)->getContent());
PERO, no lo parece. Larga historia corta, después de pasar por el código parece que elRequest
el objeto se crea correctamente (y saca correctamente elcampos parámetro y asignaid, color para ello), y la Ruta parece ser enviada bien, pero dentro de mi controlador API, no sé cómo acceder a lacampo parámetro. UtilizandoInput::get('fields')
(que es lo que uso para las solicitudes "normales") no devuelve nada, y estoy bastante seguro de que es porque la estáticaInput
está haciendo referencia o alcance a la solicitud inicial en la que entró, NO a la nueva solicitud que envié "manualmente" desde la propia aplicación.
Entonces, mi pregunta es realmente, ¿cómo debería estar haciendo esto? ¿Estoy haciendo algo mal? Idealmente, me gustaría evitar hacer algo feo o especial en mi controlador API, me gustaría poder usar Input :: get para las solicitudes enviadas internamente y no tener que realizar una segunda verificación, etc.