Custom URL parsing
Applies To:# OData WebApi v7 for aspnet webapi supported OData AspNet WebApi V7# OData Webapi for Webapi supported OData AspNet WebApi V6
Let's show how to extend the default OData Uri Parser behavior:
Basic Case Insensitive Support
User can configure as below to support basic case-insensitive parser behavior.
HttpConfiguration config = …
config.EnableCaseInsensitive(caseInsensitive: true);
config.MapODataServiceRoute("odata", "odata", edmModel);
[!Note]: Case insensitive flag enables both for metadata and key-words, not only on path segment, but also on query option.
For example:
- ~/odata/$metaDaTa
- ~/odata/cusTomers ...
Unqualified function/action call
User can configure as below to support basic unqualified function/action call.
HttpConfiguration config = …
config.EnableUnqualifiedNameCall(unqualifiedNameCall: true);
config.MapODataServiceRoute("odata", "odata", edmModel);
For example:
Original call:
- ~/odata/Customers(112)/Default.GetOrdersCount(factor=1)
Now, you can call as:
- ~/odata/Customers(112)/GetOrdersCount(factor=1)
Since Web API OData 5.6, it enables unqualified function in attribute routing. So, Users can add the unqualified function template. For example:
[HttpGet]
ODataRoute("Customers({key})/GetOrdersCount(factor={factor})")]
public IHttpActionResult GetOrdersCount(int key, [FromODataUri]int factor)
{
...
}
Enum prefix free
User can configure as below to support basic string as enum parser behavior.
HttpConfiguration config = …
config.EnableEnumPrefixFree(enumPrefixFree: true);
config.MapODataServiceRoute("odata", "odata", edmModel);
For example:
Origin call:
* ~/odata/Customers/Default.GetCustomerByGender(gender=System.Web.OData.TestCommon.Models.Gender'Male')
Now, you can call as:
* ~/odata/Customers/Default.GetCustomerByGender(gender='Male')
Advance Usage
User can configure as below to support case insensitive & unqualified function call & Enum Prefix free:
HttpConfiguration config = …
config.EnableCaseInsensitive(caseInsensitive: true);
config.EnableUnqualifiedNameCall(unqualifiedNameCall: true);
config.EnableEnumPrefixFree(enumPrefixFree: true);
config.MapODataServiceRoute("odata", "odata", edmModel);
Feedback
https://aka.ms/ContentUserFeedback.
Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see:Submit and view feedback for