내가 작동하도록하려는 URL은 http://somedomain.com/api/people/staff.33311 스타일 중 하나입니다 (LAST.FM과 같은 사이트는 RESTFul 및 웹 페이지 URL에 모든 종류의 표시를 허용하는 것과 같습니다). 예를 들어 " http://www.last.fm/artist/psy'aviah "는 LAST.FM의 유효한 URL입니다.)
작동하는 시나리오는 다음과 같습니다.- http : //somedomain.com/api/people/-모든 사람을 반환합니다.- http ://somedomain.com/api/people/staff33311-도 작동하지만 내가 아닙니다. m 다음과 같이 URL에 "점"이 허용되기를 원합니다 ( http://somedomain.com/api/people/staff.33311) .
HTTP Error 404.0 - Not Found
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
다음을 설정했습니다.
컨트롤러 "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 } ); }
나는 이미이 블로그 포스트 http://www.hanselman.com/blog/ExperimentsInWackinessAllowingPercentsAnglebracketsAndOtherNaughtyThingsInTheASPNETIISRequestURL.aspx 의 모든 팁을 따르려고 시도 했지만 여전히 작동하지 않습니다. 더 좋고 안전한 방법입니다.
우리는 내부적으로 이와 같은 ID를 가지고 있으므로 점을 어떤 식 으로든, 가급적이면 "."스타일로 맞추기위한 해결책을 찾아야합니다. 하지만 필요한 경우 URL에 대한 대체 제안에 열려 있습니다.