URL mà tôi đang cố gắng cho phép hoạt động là một URL có kiểu: http://somedomain.com/api/people/staff.33311 (giống như các trang web như LAST.FM cho phép tất cả các loại dấu hiệu trong url RESTFul & WebPage của chúng , ví dụ: " http://www.last.fm/artist/psy'aviah " là url hợp lệ cho LAST.FM).
Các tình huống sau đây hoạt động như thế nào: - http://somedomain.com/api/people/ - trả về tất cả mọi người - http://somedomain.com/api/people/staff33311 - cũng sẽ hoạt động, nhưng không phải như tôi ' m sau khi tôi muốn url chấp nhận một "dấu chấm", như ví dụ bên dưới - http://somedomain.com/api/people/staff.33311 - nhưng điều này mang lại cho tôi
HTTP Error 404.0 - Not Found
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
Tôi đã thiết lập những thứ sau:
Bộ điều khiển "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 } ); }
Tôi đã thử làm theo tất cả các mẹo của bài đăng blog này http://www.hanselman.com/blog/ExperimentsInWackinessAllowingPercentsAnglebracketsAndOtherNaughtyThingsInTheASPNETIISRequestURL.aspx nhưng nó vẫn không hoạt động .. Tôi cũng nghĩ nó khá tẻ nhạt và tôi tự hỏi liệu có cái khác không, cách tốt hơn và an toàn hơn.
Chúng tôi có Id nội bộ của chúng tôi như thế này, vì vậy chúng tôi sẽ phải tìm giải pháp để phù hợp với dấu chấm theo cách này hay cách khác, tốt nhất là theo kiểu "." nhưng tôi sẵn sàng nhận các đề xuất thay thế cho url nếu cần ...