Sto creando un web API utilizzando mvc 6. ora sto cercando di ottenere un elemento dal mio db. la chiave in questa tabella è una stringa (indirizzo email). Non ho accesso a questo database, quindi non posso cambiare la chiave di questo tavolo.Ottieni elemento in base alla stringa
Ora durante la creazione di una demo webapi sono riuscito a creare un controller per estrarre gli elementi in base a una chiave che era un int. Ma quando si tenta di ottenere un elemento con una stringa, il programma si blocca.
[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);
}
}
quando si cerca di accedere a questo percorso della chiave (example.com/api/Todo/key) essendo la stringa ottengo un'eccezione nei miei startup.cs
l'eccezione nel browser legge:
System.InvalidOperationException il vincolo di ingresso 'id' - 'stringa' sulla rotta 'api/Todo/{id: string}' non poteva essere risolto dal resolver vincolo di tipo 'DefaultInlineConstraintResolver'.
parte dei startup.cs in cui il codice interruzioni è:
// Add MVC to the request pipeline.
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller}/{action}/{id?}",
defaults: new { controller = "Home", action = "Index" });
});
i cant sembrano di capire il motivo per cui non è permesso di ottenere un elemento da una chiave che è una stringa. questo è anche possibile e se sì cosa sto facendo di sbagliato?
Avete assolutamente bisogno della parte ': string'? –
È possibile rimuovere ': string' per impostazione predefinita. – adricadar
thx ha fatto il lavoro (; –