L'URL que j'essaie de laisser travailler est celle du style: http://somedomain.com/api/people/staff.33311 (tout comme les sites comme LAST.FM autorisent toutes sortes de signes dans leurs URL RESTFul & WebPage , par exemple " http://www.last.fm/artist/psy'aviah " est une URL valide pour LAST.FM).
Ce qui fonctionne, ce sont les scénarios suivants: - http://somedomain.com/api/people/ - qui renvoie toutes les personnes - http://somedomain.com/api/people/staff33311 - fonctionnerait également, mais ce n'est pas ce que je ' m après je voudrais que l'URL accepte un "point", comme l'exemple ci-dessous - http://somedomain.com/api/people/staff.33311 - mais cela me donne un
HTTP Error 404.0 - Not Found
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
J'ai mis en place les choses suivantes:
Le contrôleur "PeopleController"
public IEnumerable<Person> GetAllPeople() { return _people; } public IHttpActionResult GetPerson(string id) { var person = _people.FirstOrDefault(p => p.Id.ToLower().Equals(id.ToLower())); if (person == null) return NotFound(); return Ok(person); }
Le WebApiConfig.cs
public static void Register(HttpConfiguration config) { // Web API configuration and services // Web API routes config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); }
J'ai déjà essayé de suivre tous les conseils de ce blog http://www.hanselman.com/blog/ExperimentsInWackinessAllowingPercentsAnglebracketsAndOtherNaughtyThingsInTheASPNETIISRequestURL.aspx mais ça ne fonctionnera toujours pas .. Je pense aussi que c'est assez fastidieux et je me demande s'il n'y en a pas d'autre, manière meilleure et plus sûre.
Nous avons nos identifiants en interne comme ça, donc nous allons devoir trouver une solution pour adapter le point d'une manière ou d'une autre, de préférence dans le style "." mais je suis ouvert à d'autres suggestions d'urls si besoin est ...