Decided to use some spare time to revisit Blazor, particularly getting it to work with OData. Taking my inspiration from Hassan Habib and his Enabling Pagination in OData post I wanted to build upon that and modernise the approach slightly by implementing client side Blazor and bringing some of the goodies from NET5 by using a code behind approach for example.
Had a scenario where I need to hide some of the API’s controller endpoints from Swagger along with their respective schemas that aren’t yet ready for public consumption. I still wanted them to be available for Postman/Newman tests as part of the CI/CD. Manged to achieve this using the following Swashbuckle filter and MVC convention:-
I’d like to run a full suite of Postman tests are part of a CD pipeline into pre-production to indicate any issues and stopping the deployment of the API further. I’d built up 200+ Postman tests to cover standard CRUD operations on a number of resources. The tests were checking the POST responses for certain eleements returned in the body, 200 responses etc. Similar for PUTS, PATCHES and GETS. However, it would be nice to create a resource then reference this resource across all API operations for that resource.
On updating Azure API Management with a new OpenAPI definition file I received the following error: “Azure API Management Template Parameters Used In The UriTemplate Must Be Defined In The Operation, And Vice-Versa”. A fair bit of head-scratching ensued, due to the error message not giving too much away, (which Operation? I’ve 100s of them!) and also being a bit flippant (“vice-versa” <– sass!). Also, I always check that my OpenAPI document conforms and plays nicely with the online Swagger editor. So what gives?
When creating an entity (with child entities) using POST with OData the response will only show the main Entity created. Child entities are ignored.