elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  Api Web y métodos GET
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Api Web y métodos GET  (Leído 2,568 veces)
Zeros1001

Desconectado Desconectado

Mensajes: 24


Ver Perfil
Api Web y métodos GET
« en: 1 Septiembre 2016, 08:49 am »

Buenas a todos, he realizado un par de APIs de Login, por lo que sólo tenía 2 métodos GET, uno para obtener todos los usuarios y otro get(int id) para obtener sólamente uno.

Queriendo ampliar funcionalidad y toquetear un poco he querido añadirle un tercer método GET, que recoja el nombre get(string nombre). Claro el problema está en que cuando intento meterle un string me dice que no hay ningún id que coincida, entiendo que es porque ya existe un método que sólo acepte un parámetro en ese controlador.

La cuestión es que si creo otro controlador para eso se soluciona el problema, pero me gustaría saber si existe alguna manera de seguir las buenas costumbres de REST y además tener varios métodos GET en el mismo controlador que acepten el mismo número de parámetros. Ya que otra opción sería pasarle get(int id, string nombre) pero con esto tendría que pasar siempre una url con ?id={id}&nombre={nombre}, cuando se supone que la url debería quedar sólo con / no?

Si necesitáis que especifique más o que ponga ejemplos de código no habría ningún problema.

Gracias de antemano por todo. Saludos!!


En línea

Jeferi


Desconectado Desconectado

Mensajes: 886



Ver Perfil WWW
Re: Api Web y métodos GET
« Respuesta #1 en: 7 Septiembre 2016, 17:23 pm »

La aproximación get(int, string) es adecuada mientras int pueda ser nullable.

Si el parámetro id y nombre son nullables podrías pasar uno u otro indistintamente, mientras que en el código compruebes si el id está definido pues buscas por id, pero sino buscas por nombre, y si no se pasan ninguno de los dos pues estableces un caso por defecto.


En línea

Zeros1001

Desconectado Desconectado

Mensajes: 24


Ver Perfil
Re: Api Web y métodos GET
« Respuesta #2 en: 8 Septiembre 2016, 08:39 am »

comprendo lo que quieres decir, pero mi pregunta más bien es si en una API se pueden tener varios métodos GET con el mismo número de parámetros de entrada?

Si no se puede, desde luego la solución sería tener uno con todos los parámetros y que pudiesen ser nullables.

Gracias por todo y disculpa si no me he explicado bien.
En línea

eLank0
eLhAcKeR r00Lz


Desconectado Desconectado

Mensajes: 1.062



Ver Perfil WWW
Re: Api Web y métodos GET
« Respuesta #3 en: 8 Septiembre 2016, 14:19 pm »

La única solución que se me ocurre es hacerlo mediante lenguajes tipados, de otro modo no se puede, ya que no hay manera de distinguir un método de otro.

Salu2
En línea

Neocortex

Desconectado Desconectado

Mensajes: 8



Ver Perfil
Re: Api Web y métodos GET
« Respuesta #4 en: 9 Septiembre 2016, 00:52 am »

Otra sería que en tu query buscaras por uno u otro, en lugar de moverle la lógica a tus dos GET
Código
  1. SELECT [...] FROM USER WHERE user_id=:user_id
  2. UNION ALL
  3. SELECT [...] FROM USER WHERE username=:username
  4.  
union all porque es más eficiente que un or, dependerá de la magnitud de tu bd.

Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
sobrecarga de metodos, se puede aplicar en metodos abstract o interfaces?
Desarrollo Web
jhonatanAsm 0 3,189 Último mensaje 16 Agosto 2011, 00:22 am
por jhonatanAsm
Imprimir metodos en C++
Programación C/C++
eduardo1012 0 1,408 Último mensaje 26 Octubre 2016, 03:14 am
por eduardo1012
Dudas en metodos
Java
n-utz 1 1,677 Último mensaje 2 Abril 2017, 01:49 am
por Serapis
Diferencias de metodos y dudas C#
.NET (C#, VB.NET, ASP)
pax01 2 3,278 Último mensaje 15 Noviembre 2017, 15:48 pm
por pax01
Identificar metodos en OOP
Programación General
GonzaFz 4 3,333 Último mensaje 18 Enero 2018, 04:04 am
por Serapis
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines