Die URL, die ich arbeiten lassen möchte, lautet wie folgt : http://somedomain.com/api/people/staff.33311 (genau wie Websites wie LAST.FM alle Arten von Zeichen in ihren RESTFul- und WebPage-URLs zulassen Beispiel: " http://www.last.fm/artist/psy'aviah " ist eine gültige URL für LAST.FM.
Was funktioniert, sind folgende Szenarien: - http://somedomain.com/api/people/ - das alle Personen zurückgibt - http://somedomain.com/api/people/staff33311 - würde auch funktionieren, aber es ist nicht das, was ich ' m nachdem ich möchte, dass die URL einen "Punkt" akzeptiert, wie im folgenden Beispiel - http://somedomain.com/api/people/staff.33311 - aber dies gibt mir einen
HTTP Error 404.0 - Not Found
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
Ich habe folgende Dinge eingerichtet:
Der Controller "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); }
Die 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 } ); }
Ich habe bereits versucht , nach all den Spitzen dieser Blogpost http://www.hanselman.com/blog/ExperimentsInWackinessAllowingPercentsAnglebracketsAndOtherNaughtyThingsInTheASPNETIISRequestURL.aspx aber es wird immer noch nicht .. Ich denke auch , es ist ziemlich langweilig , und ich frage mich , ob es nicht eine andere ist, besserer und sicherer Weg.
Wir haben unsere IDs intern so, also müssen wir eine Lösung finden, um den Punkt auf die eine oder andere Weise anzupassen, vorzugsweise im Stil von "." aber ich bin offen für alternative Vorschläge für URLs, wenn nötig ...