Autor
|
Tema: Api Web y métodos GET (Leído 2,568 veces)
|
Zeros1001
Desconectado
Mensajes: 24
|
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
|
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
Mensajes: 24
|
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
Mensajes: 1.062
|
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
Mensajes: 8
|
Otra sería que en tu query buscaras por uno u otro, en lugar de moverle la lógica a tus dos GET SELECT [...] FROM USER WHERE user_id=:user_id UNION ALL SELECT [...] FROM USER WHERE username=:username
union all porque es más eficiente que un or, dependerá de la magnitud de tu bd. Saludos
|
|
|
En línea
|
|
|
|
|
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
|
16 Agosto 2011, 00:22 am
por jhonatanAsm
|
|
|
Imprimir metodos en C++
Programación C/C++
|
eduardo1012
|
0
|
1,408
|
26 Octubre 2016, 03:14 am
por eduardo1012
|
|
|
Dudas en metodos
Java
|
n-utz
|
1
|
1,677
|
2 Abril 2017, 01:49 am
por Serapis
|
|
|
Diferencias de metodos y dudas C#
.NET (C#, VB.NET, ASP)
|
pax01
|
2
|
3,278
|
15 Noviembre 2017, 15:48 pm
por pax01
|
|
|
Identificar metodos en OOP
Programación General
|
GonzaFz
|
4
|
3,333
|
18 Enero 2018, 04:04 am
por Serapis
|
|