Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

228
Visualizações
Obtener elemento basado en cadena

Estoy creando una API web usando mvc 6. Ahora estoy tratando de obtener un elemento de mi base de datos. la clave en esta tabla es una cadena (dirección de correo electrónico). No tengo acceso a esta base de datos, así que no puedo cambiar la clave de esta tabla.

Ahora, al crear una demostración webapi, pude crear un controlador para extraer elementos en función de una clave que era un int. Pero al tratar de obtener un elemento mediante una cadena, el programa falla.

 [Route("api/[controller]")] public class TodoController : Controller { [HttpGet("{id:string}", Name = "GetByIdRoute")] public IActionResult GetById (string id) { var item = _items.FirstOrDefault(x => x.Id == id); if (item == null) { return HttpNotFound(); } return new ObjectResult(item); } }

cuando intento acceder a esta ruta (example.com/api/Todo/key) siendo la clave la cadena, obtengo una excepción en mi startup.cs

la excepción en el navegador dice:

System.InvalidOperationException La entrada de restricción 'id' - 'string' en la ruta 'api/Todo/{id:string}' no pudo ser resuelta por el solucionador de restricciones de tipo 'DefaultInlineConstraintResolver'.

la parte de startup.cs donde se rompe el código es:

 // Add MVC to the request pipeline. app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller}/{action}/{id?}", defaults: new { controller = "Home", action = "Index" }); });

Parece que no puedo entender por qué no puedo obtener un elemento mediante una clave que es una cadena. ¿Es esto posible y, de ser así, qué estoy haciendo mal?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Simplemente elimine :string . Realmente no está restringiendo el valor de la id de todos modos, ya es una cadena en la URL.

Esta publicación de blog bastante antigua enumera las restricciones disponibles, y puede ver que no hay una restricción de :string , porque no es necesario que la haya.

Las restricciones se utilizan para dar prioridad a restricciones "más específicas", por ejemplo, "Si esa parte de la URL es la representación de cadena de un DateTime , use esta ruta", pero como todo es una cadena (en una URL), no hay nada que una restricción de :string lo haría más específico que, si entiendes lo que quiero decir.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda