La URL que intento que funcione es una del estilo de: http://somedomain.com/api/people/staff.33311 (al igual que los sitios como LAST.FM permiten todo tipo de signos en sus URL RESTFul y WebPage , por ejemplo, " http://www.last.fm/artist/psy'aviah " es una URL válida para LAST.FM).
Lo que funciona son los siguientes escenarios: - http://somedomain.com/api/people/ - que devuelve todas las personas - http://somedomain.com/api/people/staff33311 - funcionaría también, pero no es lo que yo ' m después de que quisiera que la URL aceptara un "punto", como en el ejemplo siguiente, http://somedomain.com/api/people/staff.33311 , pero esto me da una
HTTP Error 404.0 - Not Found
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
He configurado las siguientes cosas:
El controlador "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); }
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 } ); }
Ya intenté seguir todos los consejos de esta publicación de blog http://www.hanselman.com/blog/ExperimentsInWackinessAllowingPercentsAnglebracketsAndOtherNaughtyThingsInTheASPNETIISRequestURL.aspx pero aún así no funcionará. También creo que es bastante tedioso y me pregunto si no hay otro, forma mejor y más segura.
Tenemos nuestras identificaciones internas así, así que tendremos que encontrar una solución para ajustar el punto de una forma u otra, preferiblemente en el estilo de "." pero estoy abierto a sugerencias alternativas de URL si es necesario ...