Web API-Routen zur Unterstützung von GUID- und Integer-IDs

ie kann ich @ unterstützeGET Routen für GUID und Integer? Ich erkenne, dass GUIDs nicht ideal sind, aber es ist, was es für den Moment ist. Ich möchte Unterstützung für Ganzzahlen hinzufügen, um Benutzern das Erinnern und Kommunizieren von "what @" zu erleichtersollte sei eindeutige "Schlüssel".

Beispielrouten:

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

MyWebApiConfig:

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) });
}

Meine Steuerung (nur Methodensignaturen):

[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)

    ...
}

Ich bekomme einInterner Serverfehle, wenn ich versuche, die Ressource mit der Ganzzahl aufzurufen. Jede Hilfe wird gebeten!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage