api + seleccion de campos

33 views
Skip to first unread message

diego

unread,
Apr 1, 2013, 10:59:18 PM4/1/13
to codeignit...@googlegroups.com
Estimados.
estoy armando una pequeña api y me gustaria que los usuarios
que la consuman puedan "seleccionar" que campos quieren ver

ej.

/api/contactos?campos=id, nombre, apellido

pense en pasarle $campos al modelo pero.
si alguien hace algo como...

/api/contactos?campos=COUNT(*) bla bla bla

me estarian inyectando sql! como se les ocurre que pueda validar 
cada uno de los campos que vienen? eso lo deberia hacer en el modelo o en el controlador?

gracias!!!!!

diego

Carlos Romero

unread,
Apr 1, 2013, 11:56:00 PM4/1/13
to codeignit...@googlegroups.com
Pues puedes hacer un array interno de modo que puedas hacer referencia entre los campos que quieres presentar y unos índices internos,

1=> "contactos",
2=> "apellido" ... Etc

Adicionalmente, podrias hacer las llamadas con ajax para poder hacerlo con metodo post.

Y ya aun mas, podrías hacer una variable de sesiòn para validarla antes de responder por ajax...

J. Manuel Velasco

unread,
Apr 2, 2013, 1:48:46 PM4/2/13
to codeignit...@googlegroups.com
Buenas,

Yo apostar�a por el controlador, piensa que es quien se encarga de
recibir la request. El modelo solo deber�a actuar para traer los datos
de la BBDD o cualquier otro servicio.

As� de primeras, pilla la querystring y la analizas (o parseas), y en
funci�n de lo que recojas vas definiendo las acciones en el controlador.

�_-

El 02/04/13 04:59, diego escribi�:
> Estimados.
> estoy armando una peque�a api y me gustaria que los usuarios
> --
> De-suscripci�n: codeigniter-spa...@googlegroups.com
> Antes de responder revisa: http://es.wikipedia.org/wiki/Netiquette
> Reg�strate en el Censo CI: http://bit.ly/miembroscodeigniteres
> ---
> Has recibido este mensaje porque est�s suscrito al grupo
> "CodeIgniter-spanish" de Grupos de Google.
> Para anular la suscripci�n a este grupo y dejar de recibir sus correos
> electr�nicos, env�a un correo electr�nico a
> codeigniter-spa...@googlegroups.com.
> Para obtener m�s opciones, visita
> https://groups.google.com/groups/opt_out.
>
>

diego

unread,
Apr 2, 2013, 3:45:35 PM4/2/13
to codeignit...@googlegroups.com
aahja.
a ver si me ayudan a darle forma.  osea.. como revisar en el array de "validos" y luego generar otra cadena

public function index(){
$campos = $this->input->get('campos');
$campos = explode(",", $campos);

$validos = array(
   'id' => 'tabla.id',
   'nombre' => 'tabla1.nombre'
);

$registros = $this->Modelo->datos(seleccionados);
print_r($registros);
}


2013/4/2 J. Manuel Velasco <jmanuel...@gmail.com>
Buenas,

Yo apostaría por el controlador, piensa que es quien se encarga de recibir la request. El modelo solo debería actuar para traer los datos de la BBDD o cualquier otro servicio.

Así de primeras, pilla la querystring y la analizas (o parseas), y en función de lo que recojas vas definiendo las acciones en el controlador.

·_-

El 02/04/13 04:59, diego escribió:
Estimados.
estoy armando una pequeña api y me gustaria que los usuarios

que la consuman puedan "seleccionar" que campos quieren ver

ej.

/api/contactos?campos=id, nombre, apellido

pense en pasarle $campos al modelo pero.
si alguien hace algo como...

/api/contactos?campos=COUNT(*) bla bla bla

me estarian inyectando sql! como se les ocurre que pueda validar
cada uno de los campos que vienen? eso lo deberia hacer en el modelo o en el controlador?

gracias!!!!!

diego


Antes de responder revisa: http://es.wikipedia.org/wiki/Netiquette
Regístrate en el Censo CI: http://bit.ly/miembroscodeigniteres
---
Has recibido este mensaje porque estás suscrito al grupo "CodeIgniter-spanish" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a codeigniter-spanish+unsub...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.



Antes de responder revisa: http://es.wikipedia.org/wiki/Netiquette
Regístrate en el Censo CI: http://bit.ly/miembroscodeigniteres
--- Has recibido este mensaje porque estás suscrito al grupo "CodeIgniter-spanish" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a codeigniter-spanish+unsub...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.



edgarahs

unread,
Apr 3, 2013, 9:20:00 AM4/3/13
to codeignit...@googlegroups.com
Checa la función $this->uri->uri_to_assoc(n)  en http://www.escodeigniter.com/guia_usuario/libraries/uri.html

diego

unread,
Apr 3, 2013, 9:25:26 AM4/3/13
to codeignit...@googlegroups.com

Esa parte ya está!! Los campos que el usuario quiere los manda por GET


falta como dejar afuera los campos inválidos!  Gracias!!

Sent from Mailbox for iPhone



Antes de responder revisa: http://es.wikipedia.org/wiki/Netiquette
Regístrate en el Censo CI: http://bit.ly/miembroscodeigniteres
---
Has recibido este mensaje porque estás suscrito al grupo "CodeIgniter-spanish" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a codeigniter-spa...@googlegroups.com.

J. Manuel Velasco

unread,
Apr 4, 2013, 2:15:19 AM4/4/13
to codeignit...@googlegroups.com
declara un array con todos los campos, y juega con los que se pasan por par�metro para conformar de todos cuales muestras, aunque a primeras me viene que si los que tienes que mostrar son los que se indican por la querystring pues no neceistas dejar fuera nada, muestras esos que tienes en la querystring

�_-

El 03/04/13 15:25, diego escribi�:

Esa parte ya est�!! Los campos que el usuario quiere los manda por GET


falta como dejar afuera los campos inv�lidos! �Gracias!!
�

Sent from Mailbox for iPhone

On Wed, Apr 3, 2013 at 10:20 AM, edgarahs <edgar.herr...@gmail.com> wrote:

Checa la funci�n�$this->uri->uri_to_assoc(n)��en�http://www.escodeigniter.com/guia_usuario/libraries/uri.html

El lunes, 1 de abril de 2013 20:59:18 UTC-6, diego escribi�:
Estimados.
estoy armando una peque�a api y me gustaria que los usuarios
que la consuman puedan "seleccionar" que campos quieren ver

ej.

/api/contactos?campos=id, nombre, apellido

pense en pasarle $campos al modelo pero.
si alguien hace algo como...

/api/contactos?campos=COUNT(*) bla bla bla

me estarian inyectando sql! como se les ocurre que pueda validar�
cada uno de los campos que vienen? eso lo deberia hacer en el modelo o en el controlador?

gracias!!!!!

diego

--
De-suscripci�n: codeigniter-spa...@googlegroups.com

Antes de responder revisa: http://es.wikipedia.org/wiki/Netiquette
Reg�strate en el Censo CI: http://bit.ly/miembroscodeigniteres
---
Has recibido este mensaje porque est�s suscrito al grupo "CodeIgniter-spanish" de Grupos de Google.
Para anular la suscripci�n a este grupo y dejar de recibir sus correos electr�nicos, env�a un correo electr�nico a codeigniter-spa...@googlegroups.com.
Para obtener m�s opciones, visita https://groups.google.com/groups/opt_out.
�
�

--
De-suscripci�n: codeigniter-spa...@googlegroups.com

Antes de responder revisa: http://es.wikipedia.org/wiki/Netiquette
Reg�strate en el Censo CI: http://bit.ly/miembroscodeigniteres
---
Has recibido este mensaje porque est�s suscrito al grupo "CodeIgniter-spanish" de Grupos de Google.
Para anular la suscripci�n a este grupo y dejar de recibir sus correos electr�nicos, env�a un correo electr�nico a codeigniter-spa...@googlegroups.com.
Para obtener m�s opciones, visita https://groups.google.com/groups/opt_out.
�
�

edgarahs

unread,
Apr 5, 2013, 12:42:20 AM4/5/13
to codeignit...@googlegroups.com
Chécate la guía http://www.escodeigniter.com/guia_usuario/database/fields.html
La función $this->db->list_fields() devuelve un arreglo que contiene los nombres de los campos.
Reply all
Reply to author
Forward
0 new messages