Best Practices for ASP.NET Core Web API Development

  • Splitting the application into smaller projects is like organizing a messy closet – it makes things easier to find.
  • Using attribute routing in web API projects is like giving someone a detailed map to find buried treasure.
  • Using DTOs in APIs is like using a translator to communicate with someone who speaks a different language.
  • Implementing API versioning is like offering both old and new flavors of ice cream at an ice cream shop.
  • Implementing asynchronous code is like opening up multiple checkout lanes at the grocery store to prevent long lines.
  • Caching data in applications is like keeping frequently used items on a desk to avoid rummaging through drawers every time.
  • Using JWTs for authentication is like giving each user a key to access a secure clubhouse.


In this video, we will discuss the best practices for developing ASP.NET Core Web API projects. The opinions shared are based on extensive experience and numerous projects developed throughout a developer’s career.

  • Encourages small project organization
  • Highlights onion architecture
  • Emphasizes the value of clean service registration

Key Takeaways

Encourages project modularity
Emphasizes clean service registration

Project Organization

It is crucial to split the application into smaller projects to achieve better organization and separation of concerns. This approach also enables better modularity, easier maintenance, and shared logic between different projects.

  • Benefits of smaller projects
  • Utilization of folders and onion architecture

Service Configuration

Clean service registrations are crucial for easy readability and maintenance. Using extension methods to move service registration logic from the program class ensures clean configuration and readability.

  • Benefits of clean service registrations
  • Usage of extension methods for registrations

Controller and Actions

Controllers should remain clean, without embedded business logic, and be responsible for accepting service instances and organizing HTTP action methods. Clean and simple responsibilities include handling HTTP requests, model validation, error handling, and returning responses.

"Controllers should be clean and simple, with responsibilities limited to handling HTTP action methods."

Exception Handling

Global exception handling is essential for maintaining clean controller actions. By implementing exception handling globally, the logic is extracted into different features, promoting clean and readable action methods.

  • Benefits of global exception handling
  • Utilization of action filters to extract logic

DTO Usage

Utilizing DTOs for returning results and accepting inputs helps to build better APIs. Separating entities for communication with the client from entities communicating with the database is a best practice.

  • Benefits of using DTOs
  • Prevention of circular reference problems


Attribute routing is recommended over conventional routing for better descriptive routes, matching route parameter names with actual parameters inside action methods.

  • Advantages of attribute routing
  • Descriptive route examples

"Attribute routing provides descriptive routes, ensuring clarity for API consumers."


Implementing a logging mechanism is essential for monitoring software behavior in production. Various logging providers can be used to implement logging logic within a project.

  • Importance of logging in production
  • Utilization of NLog library for custom logging

Paging, Searching, and Sorting

Implementing paging, searching, and sorting in API development is crucial for optimizing performance and better navigation of returned results.

  • Advantages of implementing paging, searching, and sorting
  • Utilization of the Builder pattern for chaining calls


  • Benefits of implementing paging, searching, and sorting
  • Utilization of the Builder pattern for optimization

API Versioning

API versioning is recommended to support changing requirements without impacting API consumers, preserving the old functionality and promoting new features.

  • Importance of API versioning
  • Benefits of supporting changing requirements

Asynchronous Code

Usage of asynchronous code is crucial for avoiding performance bottlenecks and enhancing application responsiveness. Asynchronous code improves scalability and prevents thread pool blocking.

  • Advantages of asynchronous code
  • Utilization of asynchronous code for database operations


Implementing caching is recommended to boost application performance, reduce database costs, and improve data retrieval processes.

  • Benefits of caching
  • Importance of reducing database access

"Caching significantly improves application performance and reduces database costs."

Content Negotiation

Implementing content negotiation for formatting API responses based on client requests is crucial for supporting various response formats.

  • Importance of content negotiation
  • Custom format rules and configuration


Implementing JWT authentication and authorization systems, along with refresh tokens, is essential for secure app development and ensuring a better user experience.

  • Importance of JWT authentication
  • Benefits of using external token providers

By following the best practices discussed in the video, developers can create outstanding APIs. Sharing additional thoughts and practices in the comment section is encouraged for the benefit of the developer community.

"Implementing best practices ensures the creation of outstanding APIs."

Key Takeaways

Emphasizes API best practices
Encourages community contribution

About the Author

About the Channel:

Share the Post: