OData
Create and consume RESTful APIs in a simple and standard way
Latest posts
Support for fetching nested paths in OData Web API
Background OData services use nested paths to access properties or entities related to a resource. For example, if you want to access orders of a given customer, you would use a request path like: 7.x provides two main approaches for handling such requests: convention and attribute routing. In the first approach, we create controller actions with conventional naming patterns to handle specific scenarios. For example, if you want to handle fetching the customers entity set (), you would implement a method in the that returns the collection corresponding to the entity set as follows: To retrieve...
Build formatter extensions in ASP.NET Core OData 8 and hooks in ODataConnectedService
Introduction In this post, I will create formatter extensions in an OData web service and request/response hooks in an OData client application to generate/consume ETag control information. ETag (aka entity tag), one of OData control information that may be applied to an entity or collection in response, can be used in a subsequent request to avoid overwriting if the entity or collection's value has been changed by other requests. ETag value normally can be generated using concurrency properties automatically in OData, however, I’d like to use this post to share with you the ideas of how to extend serializati...
Tutorial: Creating a Service with ASP.NET Core OData 8.0 for .NET 5
In this document, we will walk through the process of creating a local service using OData 8.0, which is optimized to support ASP.NET Core 5. To learn more about the changes, check out ASP.NET Core OData 8.0 Preview for .NET 5Â (which also references ASP.NET Core OData now Available), written by my colleague, Sam. You'll notice that this post has a lot of similarities; here, I'm aiming to consolidate our documentation and share my experience from the perspective of an intern new to OData. Topics Covered Software Used As always, ...
Up & Running w/ OData in ASP.NET 6
In this article, I'm going to walk you through the simplest way you can follow to get up and running with OData 8.0 on ASP.NET 6.0 - including source code examples, video walk-throughs and a glimpse into the future of OData.
API versioning extension with ASP.NET Core OData 8
Introduction API versioning can help evolving our APIs without changing or breaking the existing API services. URL segment, request header, and query string are three ways to achieve API versioning in ASP.NET Core application. ASP.NET Core OData 8, built upon ASP.NET Core, has the built-in API versioning functionality via route URL prefix template. For instance, the following code configures a version template in the route URL prefix to achieve URL based API versioning: Based on this configuration, it supports API versioning using URL segment as: ASP.NET Core OData 8 doesn't have the built-in ...
Attribute Routing in ASP.NET Core OData 8.0 RC
Introduction Attribute routing is how Web API matches the incoming HTTP requests to an action based on route template attributes decorated on controller or action. ASP.NET Core defines a set of route template attributes to enable attribute routing, such as RouteAttribute, HttpGetAttribute etc. ASP.NET Core OData 8.0 RC supports these attributes to enable you to define OData attribute routing endpoints. In this post, I would like to share details about the changes and usages of the attribute routing in OData ASP.NET Core OData 8.0 RC. The code snippets in this post are from this sample project. Please try and...
OData Connected Service 0.12.0 Release
OData Connected Service 0.12.0 has been released on the Visual Studio Marketplace. This release includes the following changes: Restored default settings Some default options were inadvertently changed in a previous update, leading to default options that do not make sense for the majority of use cases. We have restored the affected default values to more reasonable options: Visit this page to learn more about available settings and their impact on the code generation process. Support for reference models with relative URIs In previous version, you would get an...
Passing OData Query Options in the Request Body
The query options part of an OData URL can be quite long, potentially exceeding the maximum length of URLs supported by components involved in transmitting or processing the request. HTTP does not impose any limits on the length of a URL, however, many hosting environments (including IIS) impose limitations which may restrict the client's ability to request the exact set of data that they are interested in. These limitations would especially pose a big challenge for clients using explicit select statements for example. Background One way that you can go round these limitations is by wrapping the GET request in ...
Introducing the OData Web API Authorization library
This post introduces the Web API Authorization library which automatically enforces the permissions defined in your OData model on your Web API endpoints.