URL yang saya coba biarkan berfungsi adalah dengan gaya: http://somedomain.com/api/people/staff.33311 (seperti situs seperti LAST.FM mengizinkan semua jenis tanda di url RESTFul & WebPage mereka , misalnya " http://www.last.fm/artist/psy'aviah " adalah url valid untuk LAST.FM).
Apa yang berhasil adalah skenario berikut: - http://somedomain.com/api/people/ - yang mengembalikan semua orang - http://somedomain.com/api/people/staff33311 - akan berfungsi juga, tetapi bukan itu yang saya ' m setelah saya ingin url menerima "titik", seperti contoh di bawah - http://somedomain.com/api/people/staff.33311 - tetapi ini memberi saya
HTTP Error 404.0 - Not Found
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
Saya telah menyiapkan hal-hal berikut:
Pengontrol "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 } ); }
Saya sudah mencoba mengikuti semua tip dari posting blog ini http://www.hanselman.com/blog/ExperimentsInWackinessAllowingPercentsAnglebracketsAndOtherNaughtyThingsInTheASPNETIISRequestURL.aspx tetapi masih tidak berfungsi .. Saya juga merasa ini cukup membosankan dan saya ingin tahu apakah tidak ada yang lain, cara yang lebih baik dan lebih aman.
Kami memiliki Id kami secara internal seperti ini, jadi kami harus menemukan solusi untuk menyesuaikan titik dengan satu atau lain cara, lebih disukai dalam gaya "." tapi saya terbuka untuk saran alternatif untuk url jika perlu ...