Releases: OData/RESTier
Restier 1.1 RTM
Features:
Platform
- Async Convention-based function support (including
On[Action][EntityName]Async
function names) by @robertmclaws in #728 - Improved exception output consistency by @robertmclaws in ef5f22d and #734
- Improved performance by reducing allocations by @robertmclaws in 3ccea9e and 1908c03
- Add SECURITY.md containing instructions for reporting security bugs by @gathogojr in #729
ASP.NET Core
- .NET 8.0 support by @robertmclaws in #734
- Endpoint Routing support by @jspuij in #731 and by @robertmclaws in #738
- (See the ASP.NET Core Sample for updated Endpoint Routing usage)
- HttpContext improvements by @robertmclaws in #728
- Swagger support by @Tiberriver256, @cilerler, and @robertmclaws in #742
New Contributors
- @gathogojr made their first contribution in #729
- @Tiberriver256 made their first contribution in #742
Full Changelog: v1.0.0...v1.1.0
Restier v1.0 RTM
Features
- ASP.NET Classic 4.7.2 and later support
- Supports Entity Framework Classic 6.x
- ASP.NET Core 3.1 and later support
- Supports Entity Framework Classic 6.x
- Supports Entity Framework Core 5.0 and later
New Contributors
- @QingshuChen made their first contribution in #498
- @robertmclaws made their first contribution in #529
- @robward-ms made their first contribution in #566
- @biaol-odata made their first contribution in #585
- @0xced made their first contribution in #584
- @cwoodruff made their first contribution in #633
- @jspuij made their first contribution in #645
- @ansonliam made their first contribution in #675
Full Changelog: 0.6.0...v1.0.0
Restier RC1
THE LONG-AWAITED RELEASE CANDIDATE IS HERE!
The team has been working hard these past 9 months to give you the best product possible. Leading up to this release, Restier services are powering US State agencies, restaurants, and startups around the globe. It has been thoroughly tested and is ready for you to build innovative apps.
Release Notes
Reporting Problems
If you encounter any problems, please open a new Issue and label it "rc1".
A Note on .NET Core Support
We know .NET Core is important, and Version 2 will be rebuilt from the ground up to support .NET Core 3.0. We expect that release to happen sometime in H1 2020.
In the meantime, the recommended approach is to separate your APIs into an ASP.NET Classic WebApi app on .NET Framework 4.7.2, and leverage Entity Framework 6.3 (which can be used on both .NET Framework AND .NET Core) for your entities. This way, your front-end can still be ASP.NET Core, even if the APIs can't.
We know this is not ideal and as community members actively shipping Restier-powered .NET Core apps, we feel your pain. But it is a battle-tested approach that works very well.
New Features
- Dependency Injection has been significantly refactored to properly implement Constructor injection wherever possible.
- We've split Restier registration to feel more like .NET Core. Services are now registered at startup, and no longer have to rely on implementing a ConfigureApi override in your API classes.
- We've decoupled the EF provider from ASP.NET Classic, so you can build CQRS APIs in Restier without unnecessary dependencies.
- NOTE:
Microsoft.Restier.AspNet
's NuGet package dependency onMicrosoft.Restier.EntityFramework
will be removed in the next release.
- NOTE:
- Route mapping now registers a
RestierBatchHandler
for you by default. - You can now correctly specify whether detailed stack traces (cleaned up through Ben.Demystifier) are returned when an exception is thrown. See this example for more details.
- You can now throw a
StatusCodeException
to return specific HTTP Status codes and error messages to the API consumer. See this example for more details.
Dependency Changes
- Compatible with .NET Framework 4.6.2 and later. (Recommend version 4.7.2 for Azure AppService support)
- Compatible with
Microsoft.Extensions.DependencyInjection
version 2.2 and later. (Recommend version 3.0) - Compatible with
Microsoft.OData.Core
version 7.6.0 and later. - Compatible with
EntityFramework
version 6.1.3 and later (recommend version 6.3) - Compatible with
Microsoft.AspNet.OData
version 7.2.1 and later. - Compatible with
Microsoft.AspNet.WebApi
version 5.2.7 and later.
API Changes
- The entire framework has been massively refactored:
- Projects have been converted to the new SDK-style projects.
- Project names and package names have been simplified, and in come cases, reverted to earlier incarnations.
- Namespacing has been simplified.
- Base implementations have been prefixed with "Default" more consistently, to make it easier to differentiate implementations in providers and unit tests.
- Entity-Framework specific interface implementations (classes that implement
IModelMapper
orIModelProducer
, for example) have been prefixed with "EF" (EFModelMapper
,EFModelProducer
, etc) to reduce ambiguity. IServiceCollection.AddService()
methods have been renamed toIServiceCollection.AddChainedService()
to better explain what is happening under the covers. If you need an unchained service, use the defaultIServiceCollection.AddSingleton()
orIServiceCollection.AddScoped()
methods.config.MapRestierRoute()
has been changed toconfig.MapRestier()
and has simplified the parameters.- Pluralization of Convention-Based methods has been fixed. Filters now use the plural form of your objects, and Insert/Update/Delete interceptors now use the singular form.
- Unnecessary exception types have been eliminated.
Upgrade Instructions
- Move services previously registered under
EntityFrameworkApi.ConfigureApi()
in your Restier API toconfig.UseRestier()
in your WebApiConfig. See this example for more details. - If you are building an API based on an Entity Framework
DbContext
, register for the EF6 Provider inconfig.UseRestier()
. See this example for more details. - Change your
config.MapRestierRoute()
toconfig.MapRestier()
. See this example for more details. - Change your
[Operation]
attributes to specify anOperationType
instead of usingHasSideEffects
. The compiler warning gives you information on how to fix it, see this example for more details. - Fix the pluralization of your Interceptors. See this example for more details.
- Breakdance.Restier can generate a VisibilityMatrix that shows you the method names Restier expects based on your model. See this example for more details.
1.0.0 Beta 1
The first Beta release of Restier.
What's Changed
- Support more services in TrippinInMemory by @mirsking in #489
- Fix issue #491 by @mirsking in #495
- Support datatime whose kind is Local by @QingshuChen in #498
- Remove AutoExpand attribute of Friends, change Trips to be not null. by @mirsking in #499
- Make restier work with WAO 6.x and ODL 7.x by @chinadragon0515 in #497
- Adopt new public API from WAO to simplify the code by @chinadragon0515 in #502
- Make some APi public to facilitate some advance use case by @chinadragon0515 in #506
- fix issue 505 and add patch test cases, also support key as segment and add CORS header by @mirsking in #507
New Contributors
- @QingshuChen made their first contribution in #498
Full Changelog: 0.6.0...1.0.0-beta
0.6.0 Final
Remove one more VS2015 feature usage
0.5.0 Beta
This version includes DI, and will be the final release of 0.5.0, beta is used as there is a dependency in rc stage and can not name a release like 0.5.0.
0.4.0-rc
Features supported in 0.4.0-rc
- Unified hook handler mechanism for users to inject hooks, Tutorial
- Built-in
RestierController
now handles most CRUD scenarios for users including entity set access, singleton access, entity access, property access with $count/$value, $count query option support. #136, #193, #234, Tutorial - Support building entity set, singleton and operation from
Api
(previouslyDomain
). Support navigation property binding. Now users can save much time writing code to build model. #207, Tutorial - Support in-memory data source provider #189
Bug-fixes since 0.3.0-beta2
- Fix IISExpress instance startup issue in E2E tests #145, #241
- Should return 400 if there is any invalid query option #176
- EF7 project bug fixes #253, #254
Improvements since 0.3.0-beta2
- Thorough API cleanup, code refactor and concept reduction #164
- The Conventions project was merged into the Core project. Conventions are now enabled by default. The
OnModelExtending
convention was removed due to inconsistency. #191 - Add a sample service with an in-memory provider #189
- Unified exception-handling process #24, #26
- Simplified
MapRestierRoute
now takes anApi
class instead of a controller class. No custom controller required in simple cases. - Update project URL in RESTier NuGet packages.
0.4.0-beta
Features supported in 0.4.0-beta
- Unified hook handler mechanism for users to inject hooks, Tutorial
- Built-in
RestierController
now handles most CRUD scenarios for users including entity set access, entity access, property access with $count/$value support. #193, #234, Tutorial - Support building entity set, singleton and operation from
Api
(previouslyDomain
). Now users can save much time writing code to build model. #207, Tutorial - Support in-memory data source provider #189
Bug-fixes since 0.3.0-beta2
- Fix IISExpress instance startup issue in E2E tests #145, #241
- Should return 400 if there is any invalid query option #176
Improvements since 0.3.0-beta2
- Thorough API cleanup, code refactor and concept reduction #164
- The Conventions project was merged into the Core project. Conventions are now enabled by default. The
OnModelExtending
convention was removed due to inconsistency. #191 - Add a sample service with an in-memory provider #189
- Unified exception-handling process #24, #26
- Simplified
MapRestierRoute
now takes anApi
class instead of a controller class. No custom controller required in simple cases.
0.3.0-beta2
Features supported in 0.3.0-beta2
Bug-fixes since 0.3.0-beta1
Improvements since 0.3.0-beta1
- Automatically start TripPin service when running E2E cases #146
- No need to change machine configuration for running tests under Release mode
Doc: http://odata.github.io/RESTier/#02-45-0-3-0-beta-2
Nuget packages: https://www.nuget.org/packages/Microsoft.Restier/0.3.0-beta2
0.3.0-beta1
Features supported in 0.3.0-beta1
- Complex type support #96
Improvements since 0.2.0-pre
- Northwind service uses script to generate database instead of .mdf/.ldf files #77
- Add StyleCop and FxCop to build process to ensure code quality
- TripPin service supports singleton
- Visual Studio 2015 and MSSQLLocalDB
- Use xUnit 2.0 as the test framework for RESTier #104
Doc: http://odata.github.io/RESTier/#02-08-0-3-0-beta-1
Nuget: http://www.nuget.org/packages/Microsoft.Restier/0.3.0-beta1