ASP.NET Core WebAPI should/ (must?) have

I am trying to have an extensive list about what an ASP.NET Core WebAPI project should / must have . After al, can be easy integrated into a VS project – or a wizard. I have put into 3 categories:

  1. Development – you need at development time.
  2. Testing – needed at testing time
  3. Production – needed in production

Note: All three are needed to be developed  !

  1. Development – Visibility  – see definition of the API
  2. Development  – Authorization + Authentication
  3. Development-Problem Details –  flow the
    errors as JSON text , keep status code
  4. Testing – test your application in CI mode
    • Production – Versioning  API endpoints
      • Production – CORS
      • Production – WhiteBox Monitoring
      • Production –BlackBox Monitoring and Observability – read about RED and USE
      • Production –Rate limit – do not allow insane usage
      • Production –Caching data – to return latest values
      • Production  – Status of the system

      Nice to have:

      1. Graph with endpoints: https://andrewlock.net/adding-an-endpoint-graph-to-your-aspnetcore-application/ – read about https://en.wikipedia.org/wiki/DOT_(graph_description_language) 
      2. Versioning  end points- see what version is your program: http://msprogrammer.serviciipeweb.ro/2019/02/18/identify-version-for-application-and-components-for-backend-net-core-and-frontendangularpart-2-backend/
      3. Not yet discovered, but should have endpoints for environment, settings json and others.
      4. Formatters: BSON, CSV, YAML: https://github.com/WebApiContrib/WebAPIContrib.Core