L'API Web de Routes pour soutenir à la fois GUID et integer Id
Comment puis-je soutenir GET
itinéraires pour les deux GUID et entier? Je me rends compte Guid ne sont pas l'idéal, mais c'est ce que c'est pour maintenant. Je suis désireux d'ajouter le support pour les entiers pour le rendre plus facile pour les utilisateurs à retenir et à communiquer ce que devrait être unique "clés".
Exemple itinéraires:
testcases/9D9A691A-AE95-45A4-A423-08DD1A69D0D1
testcases/1234
Mon 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) });
}
Mon contrôleur (signatures de méthode uniquement):
[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)
...
}
Je suis un Erreur Interne du Serveur lorsque je tente d'appeler la ressource à l'aide de l'entier. Toute aide est appréciée!
Itinéraire unique qui prend une chaîne de caractères, et fait de la vérification?
Jetez un oeil à cette réponse: stackoverflow.com/questions/14353466/...
Jetez un oeil à cette réponse: stackoverflow.com/questions/14353466/...
OriginalL'auteur gopherr | 2015-07-23
Vous devez vous connecter pour publier un commentaire.
Merci à @SirwanAfifi! J'étais venu dans le Attribut de Routage dans ASP.NET l'article visé dans la question, vous avez mentionné, mais apparemment je n'ai pas vu la nécessité pour l'itinéraire attribut contraintes à l'époque.
Pour moi, c'était à l'aide de
[Route("{id:guid}")]
et[Route("{key:int}")]
sur mon contrôleur de méthodes qui a fait le tour. J'ai aussi commenté le Http routes liées à{id}
et{key}
dans monWebApiConfig
pour vérifier que les attributs dans le contrôleur sont responsables de l'acheminement.OriginalL'auteur