Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

227
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!