Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

212
Vistas
Rutas de API web para admitir GUID e ID de enteros

¿Cómo puedo admitir rutas GET tanto para GUID como para enteros? Me doy cuenta de que los GUID no son ideales, pero es lo que es por ahora. Quiero agregar soporte para números enteros para que sea más fácil para los usuarios recordar y comunicar lo que deberían ser "claves" únicas.

Rutas de ejemplo:

 testcases/9D9A691A-AE95-45A4-A423-08DD1A69D0D1 testcases/1234

Mi WebApiConfig :

 public static void Register(HttpConfiguration config) { config.MapHttpAttributeRoutes(); var routes = config.Routes; routes.MapHttpRoute("DefaultApiWithAction", "Api/{controller}/{action}"); routes.MapHttpRoute("DefaultApiWithKey", "Api/{controller}/{key}", new { action = "Get" }, new { httpMethod = new HttpMethodConstraint(HttpMethod.Get), key = @"^\d+$" }); routes.MapHttpRoute("DefaultApiWithId", "Api/{controller}/{id}", new { action = "Get" }, new { httpMethod = new HttpMethodConstraint(HttpMethod.Get) }); routes.MapHttpRoute("DefaultApiGet", "Api/{controller}", new { action = "Get" }, new { httpMethod = new HttpMethodConstraint(HttpMethod.Get) }); routes.MapHttpRoute("DefaultApiPost", "Api/{controller}", new { action = "Post" }, new { httpMethod = new HttpMethodConstraint(HttpMethod.Post) }); }

Mi controlador (solo firmas de métodos):

 [RoutePrefix("Api/TestCases")] public class TestCasesController : PlanControllerBase { [Route("")] public OperationResult<IEnumerable<TestCaseDTO>> Get([FromUri] TestCaseRequest request) [Route("{id}")] [HttpGet] public OperationResult<TestCaseDTO> Get(Guid id) [Route("{key}")] [HttpGet] public OperationResult<TestCaseDTO> Get(int key) ... }

Recibo un error interno del servidor cuando intento llamar al recurso usando el número entero. ¡Cualquier ayuda es apreciada!

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

¡Gracias a @SirwanAfifi! Me encontré con el artículo Enrutamiento de atributos en ASP.NET al que se hace referencia en la pregunta SO que mencionó, pero aparentemente no vi la necesidad de restricciones de atributos de ruta en ese momento.

Para mí, fue usar [Route("{id:guid}")] y [Route("{key:int}")] en los métodos de mi controlador lo que hizo el truco. También comenté las rutas Http relacionadas con {id} y {key} en mi WebApiConfig para verificar que los atributos en el controlador sean responsables de realizar el enrutamiento.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda