{"id":54007,"date":"2025-06-03T11:41:59","date_gmt":"2025-06-03T11:41:59","guid":{"rendered":"https:\/\/academy.xebia.com\/us\/?post_type=course&#038;p=54007"},"modified":"2025-09-24T17:54:02","modified_gmt":"2025-09-24T17:54:02","slug":"clean-architecture-with-asp-net-core-8-be","status":"publish","type":"course","link":"https:\/\/academy.xebia.com\/us\/training\/clean-architecture-with-asp-net-core-8-be\/","title":{"rendered":"Clean Architecture with ASP.NET Core 8 (BE)"},"content":{"rendered":"\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"9214a580\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-group-hero js-group-hero\" data-id=\"6358bc4a\">\n\t\t<div class=\"block-group-hero__background\">\n\t\t<div class=\"hero-theme block-group-hero__hero-theme\" data-id=\"d9e8e939\">\n\t\n\t<div class=\"hero-theme__background\">\n\t\t\t\t\t<div class=\"hero-theme__background--software-white\">\n\t\t\t\t<svg xmlns='http:\/\/www.w3.org\/2000\/svg' width='54' height='55' viewBox='0 0 54 55' fill='none'><path d='M2.458 33.333c-3.277-3.387-3.277-8.878 0-12.265l17.717-18.31C25.46-2.706 34.5 1.164 34.5 8.89v36.62c0 7.727-9.039 11.596-14.325 6.133L2.458 33.333Z' fill='url(#3c1e2c78-7a40-45b0-9018-1aaac5fdccd5)'\/><path d='M52.077 22.43c2.564 2.635 2.564 6.906 0 9.54L38.21 46.21C34.074 50.461 27 47.451 27 41.441V12.96c0-6.01 7.074-9.019 11.211-4.77l13.866 14.24Z' fill='url(#b0ac0058-6d6d-4f3e-946f-dba1d605141e)'\/><path fill-rule='evenodd' clip-rule='evenodd' d='M34.112 6.22c.25.825.388 1.718.388 2.67v36.62a9.14 9.14 0 0 1-.388 2.67C30.564 48.461 27 45.707 27 41.441V12.96c0-4.266 3.564-7.02 7.112-6.74Z' fill='url(#c2b1ad86-e474-4a1b-90d6-8a38250681b7)'\/><defs><linearGradient id='3c1e2c78-7a40-45b0-9018-1aaac5fdccd5' x1='17.25' y1='0.200195' x2='17.25' y2='54.2002' gradientUnits='userSpaceOnUse'><stop stop-color='#F3F3F3' stop-opacity='0.5'\/><stop offset='1' stop-color='#84117C'\/><\/linearGradient><linearGradient id='b0ac0058-6d6d-4f3e-946f-dba1d605141e' x1='40.5' y1='48.2002' x2='40.5' y2='6.2002' gradientUnits='userSpaceOnUse'><stop stop-color='#F3F3F3' stop-opacity='0.5'\/><stop offset='1' stop-color='#84117C'\/><\/linearGradient><linearGradient id='c2b1ad86-e474-4a1b-90d6-8a38250681b7' x1='30.75' y1='6.2002' x2='30.75' y2='48.2002' gradientUnits='userSpaceOnUse'><stop stop-color='#84117C'\/><stop offset='0.9999' stop-color='#A80C9E'\/><stop offset='1' stop-color='#84117C' stop-opacity='0'\/><\/linearGradient><\/defs><\/svg>\t\t\t<\/div>\n\t\t\n\t<\/div>\n<\/div>\t<\/div>\n\t<div class=\"block-group-hero__content\">\n\t\t\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"34991109\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-course-hero\">\n\t<div class=\"block-course-hero__row\">\n\t\t<div class=\"block-course-hero block-course-hero__title\">\n\t\t\t<div class=\"block-course-hero__title-container\">\n\t\t\t\t<h1\tclass=\"heading\"\n\tdata-id=\"a0ccff35\"\n>\n\tClean Architecture with ASP.NET Core 8<\/h1>\t\t\t<\/div>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"block-course-hero__row\">\n\t\t<div class=\"block-course-hero\">\n\t\t\t<div class=\"block-course-hero__content\">\n\t\t\t\t<p class=\"block-course-hero__date-location\">\n\t\t\t\t\t<span data-training-meta-p-date>\n\t\t\t\t\t<\/span>   <span data-training-meta-p-address>\t\t\t\t\t<\/span>\n\t\t\t\t<\/p>\n\t\t\t\t<div class=\"course-tags block-course-hero__course-tags\" data-id=\"ea3d6a10\">\n\t<div class=\"tags course-tags__tags js-tags\">\n\t\t<button\tclass=\"btn tags__show-more js-tags-show-more\"\n\tdata-id=\"d52d1ced\">\n\t<i class=\"icon btn__show-more\" data-id=\"0d57388c\"  aria-hidden=\"true\">\n\t<svg xmlns='http:\/\/www.w3.org\/2000\/svg' fill='none' viewBox='0 0 25 24'><path stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 12h10M12 7v10'\/><\/svg><\/i>\n\t\n\t<\/button>\t<div class=\"tags__tippy-template js-tags-tippy-template\">\n\t\t<div class=\"tags__head\">\n\t\t\t<span><\/span>\n\t\t\t<button\tclass=\"btn tags__close js-tags-close\"\n\tdata-id=\"218ab384\">\n\t<i class=\"icon btn__close\" data-id=\"89fa2d8a\"  aria-hidden=\"true\">\n\t<svg width='20' height='20' viewBox='0 0 20 20' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'><path d='M15 5L5.00103 14.999' stroke='#6A1D57' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'\/><path d='M15 14.998L5.00103 4.99907' stroke='#6A1D57' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'\/><\/svg><\/i>\n\t\n\t<\/button>\t\t<\/div>\n\t<\/div>\n<\/div><\/div><p class=\"paragraph block-course-hero__description\" data-id=\"732e4725\">\n\tBuilding testable and maintainable code is a hard requirement these days. It\u2019s vital that your software supports changes over a prolonged period of time. That is something that can be achieved only if you set up an architecture that supports this. In this workshop, you\u2019ll learn about Clean Architecture applied to ASP.NET Core 8. Clean architecture has over the years proven to be a way to create a solid foundation for enterprise-ready applications.<\/p>\t\t\t\t<div class=\"block-course-hero__trainers-list\" aria-hidden=\"true\">\n\t\t\t\t\t<a href=\"https:\/\/example.com\" class=\"author-meta block-course-hero__author-meta author-meta__make-flex author-meta__link author-meta__make-flex\" rel=\"nofollow noopener\" target=\"_blank\">\n\t\t<picture class=\"image author-meta__image\" data-id=\"e731b984\">\n\n\t\n\t\n\t<img\n\t\tsrc=\"https:\/\/example.com\"\n\t\talt=\"\"\n\t\tclass=\"image__img author-meta__image-img\"\n\t\/>\n<\/picture><h2\tclass=\"heading author-meta__heading\"\n\tdata-id=\"003abeb9\"\n>\n\tTrainer Title<\/h2>\t<\/a>\t\t\t\t<\/div>\n\t\t\t\t<div\n\t\t\t\t\tclass=\"block-course-hero__review-widget block-course-hero__review-widget-spacing\"\n\t\t\t\t\taria-hidden=\"true\">\n\t\t\t\t\t<div class=\"springest-review-widget springest-review-widget-width:300 springest-review-widget-bg:FFFFFF\">\n\t<a href=\"\">\n\t\t\t<\/a>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t<div class=\"block-course-hero__booking-container\">\n\t\t\t\t<div class=\"booking js-booking block-course-hero__booking booking__single-column\" data-id=\"a5c025b1\">\n\t\t<div class=\"booking__info\">\n\t\t<h2\tclass=\"heading booking__heading\"\n\tdata-id=\"ed98678d\"\n>\n\t<strong>Any questions?\u00a0\u00a0<\/strong><\/h2><p class=\"paragraph booking__paragraph\" data-id=\"e8e8bca5\">\n\tBrijesh will gladly help you further with any personal or in-company needs you might have.<\/p><div class=\"author-meta booking__author-meta\">\n\t\t<picture class=\"image author-meta__image\" data-id=\"65522823\">\n\n\t\n\t\n\t<img\n\t\tsrc=\"\/wp-content\/uploads\/sites\/21\/2025\/05\/Brijesh-Kohli-Profile-Picture-2-e1757405354999.jpeg\"\n\t\talt=\"\"\n\t\tclass=\"image__img author-meta__image-img\"\n\t\/>\n<\/picture>\t\t<h2\tclass=\"heading author-meta__heading\"\n\tdata-id=\"d39d3c8c\"\n>\n\t<strong>Brijesh Kohli<\/strong><br>Training Advisor<\/h2>\t\t<p class=\"paragraph author-meta__paragraph\" data-id=\"e9afc8ea\">\n\t<a href=\"tel:09999644790\" data-type=\"tel\" data-id=\"tel:09999644790\">+1 (404) 988-3790<\/a><br><a href=\"mailto:Surat.wahal@xebia.com\" data-type=\"mailto\" data-id=\"mailto:Surat.wahal@xebia.com\"><a href=\"mailto:Brijesh.kohli@xebia.com\">Brijesh.kohli@xebia.com<\/a><\/a><br><a href=\"https:\/\/www.linkedin.com\/in\/surat-wahal-12996513\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><a href=\"https:\/\/www.linkedin.com\/in\/brijesh-kohli\/\" rel=\"nofollow noopener\" target=\"_blank\">https:\/\/www.linkedin.com\/in\/brijesh-kohli\/<\/a><\/a><\/p>\t<\/div><a class=\"btn booking__contact\" title=\"Get in touch\" data-id=\"62b30db7\" href=\"https:\/\/academy.xebia.com\/us\/about-us\/contact-us\/\">\n\t\n\t\t\t<span>Get in touch<\/span>\n\t\n\t<\/a>\t<\/div>\n<\/div>\t\t\t<\/div>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\t\t<\/div>\n\t<\/div>\n\n\t<\/div>\n<\/div>\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper\" \n\tdata-id=\"ec965e72\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-course-stats\" \n\tdata-id=\"e96a9ee1\" \n\taria-hidden=\"1\"\n\t>\n\t\n\t<\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper\" \n\tdata-id=\"a1529757\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-columns\" data-id=\"3393f833\">\n\t\n\n<div class=\"block-column\" data-id=\"51039bcc\">\n\t\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"aedc3cae\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-heading\" data-id=\"86d81fef\">\n\t<h2\tclass=\"heading block-heading__heading\"\n\tdata-id=\"641fa9af\"\n>\n\tWhat will you learn?<\/h2><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"939cbce9\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-paragraph\" data-id=\"c8139c04\">\n\t<p class=\"paragraph block-paragraph__paragraph\" data-id=\"059da5cb\">\n\tYou&#8217;ll learn about the tools, frameworks and best practices to create an architecture that&#8217;s tested and is powering many applications. You\u2019ll then use the API from a Blazor front-end.<\/p><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"e17390f5\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-paragraph\" data-id=\"356af450\">\n\t<p class=\"paragraph block-paragraph__paragraph\" data-id=\"40aca37f\">\n\tAfter attending this course, you&#8217;ll walk away with ideas to create your next applications but now, based on best practices!<\/p><\/div>\n\t\t<\/div>\n\t<\/div>\n\n<\/div>\n\n\n\n<div class=\"block-column\" data-id=\"0f8f216e\">\n\t\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"e33d5b57\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-group\" data-id=\"86ee82fb\">\n\t\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"154f675c\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-heading\" data-id=\"dab82513\">\n\t<h2\tclass=\"heading block-heading__heading\"\n\tdata-id=\"ee4bcdaf\"\n>\n\tKey takeaways<\/h2><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"145194ba\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-lists\" data-id=\"9de93def\">\n\t<ol\tclass=\"lists block-lists__lists\"\n\tdata-id=\"eeceea69\"\n>\n\t<li>Understand the concepts of Clean Architecture in a practical way.<\/li><li>Build a real-world application throughout the courseLeverage AWS Managed Services to enable greater flexibility and resiliency in an infrastructure.<\/li><li>Learn about best practices and patterns you should apply in your own developmentUse the Well-Architected Framework to improve architectures with AWS solutions.<\/li><\/ol><\/div>\n\t\t<\/div>\n\t<\/div>\n\n<\/div>\t\t<\/div>\n\t<\/div>\n\n<\/div>\n\n<\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper\" \n\tdata-id=\"f7cd7304\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-columns\" data-id=\"dfe9a29c\">\n\t\n\n<div class=\"block-column\" data-id=\"175d1290\">\n\t\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"757b49de\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-heading\" data-id=\"f7059346\">\n\t<h2\tclass=\"heading block-heading__heading\"\n\tdata-id=\"9d339679\"\n>\n\tProgram<\/h2><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"828fa1e2\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-paragraph\" data-id=\"e4037e3c\">\n\t<p class=\"paragraph block-paragraph__paragraph\" data-id=\"851bb812\">\n\tThis course will give you practical insights in the concept of Clean Architecture, a way to build robust, testable and maintainable applications. We will use ASP.NET Core and Blazor to apply the knowledge during this course.<\/p><\/div>\n\t\t<\/div>\n\t<\/div>\n\n<\/div>\n\n\n\n<div class=\"block-column\" data-id=\"196bfc58\">\n\t\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"72656de2\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div\n\tclass=\"block-accordion js-block-accordion\"\n\tdata-close-adjacent=\"false\"\n>\n\t\t\n\n<div class=\"block-accordion-item js-block-accordion-item\" \n\taria-expanded=\"true\"\n>\n\t<button class=\"block-accordion-item__trigger js-block-accordion-item-trigger\" \n\t\taria-label=\"Day 1\" \n\t\taria-controls=\"c324401f\" \n\t\taria-expanded=\"true\" \n\t\tid=\"051ab8e0\"\n\t>\n\t\t<h2\tclass=\"heading block-accordion-item__title\"\n\tdata-id=\"b62c35d1\"\n>\n\tDay 1<\/h2>\t\t\n\t\t<span class=\"block-accordion-item__wrap-icon\" aria-hidden=\"true\">\n\t\t\t<i class=\"icon block-accordion-item__icon\" data-id=\"62114490\"  aria-hidden=\"true\">\n\t<svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'><path d='M13 5.5a1 1 0 1 0-2 0h2Zm-1.707 13.707a1 1 0 0 0 1.414 0l6.364-6.364a1 1 0 0 0-1.414-1.414L12 17.086l-5.657-5.657a1 1 0 0 0-1.414 1.414l6.364 6.364ZM11 5.5v13h2v-13h-2Z' fill='currentColor'\/><\/svg><\/i>\t\t<\/span>\n\t<\/button>\n\n\t<div role=\"region\" class=\"block-accordion-item__panel js-block-accordion-item-panel\" \n\t\taria-hidden=\"false\" \n\t\taria-labelledby=\"051ab8e0\" \n\t\tid=\"c324401f\"\n\t>\n\t\t<div class=\"block-accordion-item__content\">\n\t\t\t\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"23788493\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-paragraph\" data-id=\"ef7bd867\">\n\t<p class=\"paragraph block-paragraph__paragraph\" data-id=\"ef707a63\">\n\t<strong>An overview of ASP.NET Core and ASP.NET Core APIs<\/strong><br>In this first chapter, we will make sure we\u2019re all on the same page about ASP.NET Core and creating APIs with the technology. Although having previous experience with ASP.NET Core will come in handy, you will learn all that\u2019s required about some of the foundational concepts such as dependency injection, middleware and more.<\/p><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"3e2bb13f\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-paragraph\" data-id=\"0960aa6e\">\n\t<p class=\"paragraph block-paragraph__paragraph\" data-id=\"99592f99\">\n\t<strong>Introducing core architectural principles and clean architecture<\/strong><br>Clean architecture is in essence not much more than applying well-known architectural principles in a correct way. Most developers will know these but we will start with an overview of these. Next, we will inspect the concept of clean architecture and the different parts that make up the structure of it.<\/p><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"f124d34c\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-paragraph\" data-id=\"e82e1bed\">\n\t<p class=\"paragraph block-paragraph__paragraph\" data-id=\"bea420be\">\n\t<strong>Creating the application core<\/strong><br>We will start the creation of our application from the very core. In this chapter, we will understand how to structure code around contracts, apply clean structuring, add CQRS, implement business rules and much more. We will see how common packages such as Mediator and AutoMapper can be used correctly here.<\/p><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"fe7cfd22\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-paragraph\" data-id=\"f70fe8c8\">\n\t<p class=\"paragraph block-paragraph__paragraph\" data-id=\"176f35fb\">\n\t<strong>Adding the infrastructure layer<\/strong><br>So far, our code is nicely structured but it doesn\u2019t \u201cdo\u201d a lot yet. That\u2019ll quickly change in this chapter when we start adding infrastructure concerns. This will bring in functionalities such as data access based on EF Core and working with external services.<\/p><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n\n<div class=\"block-accordion-item js-block-accordion-item\" \n\taria-expanded=\"false\"\n>\n\t<button class=\"block-accordion-item__trigger js-block-accordion-item-trigger\" \n\t\taria-label=\"Day 2\" \n\t\taria-controls=\"e2e47823\" \n\t\taria-expanded=\"false\" \n\t\tid=\"46d2293f\"\n\t>\n\t\t<h2\tclass=\"heading block-accordion-item__title\"\n\tdata-id=\"01b3d7f8\"\n>\n\tDay 2<\/h2>\t\t\n\t\t<span class=\"block-accordion-item__wrap-icon\" aria-hidden=\"true\">\n\t\t\t<i class=\"icon block-accordion-item__icon\" data-id=\"2580bb6a\"  aria-hidden=\"true\">\n\t<svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'><path d='M13 5.5a1 1 0 1 0-2 0h2Zm-1.707 13.707a1 1 0 0 0 1.414 0l6.364-6.364a1 1 0 0 0-1.414-1.414L12 17.086l-5.657-5.657a1 1 0 0 0-1.414 1.414l6.364 6.364ZM11 5.5v13h2v-13h-2Z' fill='currentColor'\/><\/svg><\/i>\t\t<\/span>\n\t<\/button>\n\n\t<div role=\"region\" class=\"block-accordion-item__panel js-block-accordion-item-panel\" \n\t\taria-hidden=\"true\" \n\t\taria-labelledby=\"46d2293f\" \n\t\tid=\"e2e47823\"\n\t>\n\t\t<div class=\"block-accordion-item__content\">\n\t\t\t\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"c391d442\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-paragraph\" data-id=\"2d6d786f\">\n\t<p class=\"paragraph block-paragraph__paragraph\" data-id=\"f8e8deba\">\n\t<strong>Adding an API<\/strong><br>We\u2019ve written a lot of code already but now we\u2019ll want to see the fruits of our hard labor. We\u2019ll start with the creation of the API that\u2019ll use the core and infrastructure code that we have created. On this API, we\u2019ll also enable the use of Swagger so that it can more easily be consumed from clients.<\/p><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"c9144949\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-paragraph\" data-id=\"0e0c8532\">\n\t<p class=\"paragraph block-paragraph__paragraph\" data-id=\"a55cfa91\">\n\t<strong>Writing tests<\/strong><br>We started of with the idea that the code we\u2019re going to create is more testable, so now the proof is in the pudding. We\u2019ll create tests for the different parts of the application that we have written so far.<\/p><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"741b3677\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-paragraph\" data-id=\"d0768546\">\n\t<p class=\"paragraph block-paragraph__paragraph\" data-id=\"72d20e39\">\n\t<strong>Understanding ASP.NET Core Blazor<\/strong><br>Blazor introduces a radical new way for .NET developers to build client-side applications and since .NET 8, also server-side rendered applications. We will in this chapter understand the core concepts of Blazor, which we\u2019ll use to consume the API.<\/p><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"8afd87a1\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-paragraph\" data-id=\"688bf7ae\">\n\t<p class=\"paragraph block-paragraph__paragraph\" data-id=\"676f10ea\">\n\t<strong>Adding the Blazor UI<\/strong><br>Although it\u2019s not the focus of this course to create a UI, it\u2019s definitely useful to see how we can interact with our newly created API. In this chapter, we will learn how we can generate code for the client and we\u2019ll build the Blazor app together that uses the API.<\/p><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"2565a52d\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-paragraph\" data-id=\"a02d6167\">\n\t<p class=\"paragraph block-paragraph__paragraph\" data-id=\"61587ff7\">\n\t<strong>Completing the API with extra behaviors<\/strong><br>Our API is functional but there are areas where improvements can be made. In this final chapter, we will extend our API with other cross-cutting concerns such as authentication, logging and more.<\/p><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n<\/div>\n\t\t<\/div>\n\t<\/div>\n\n<\/div>\n\n<\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper\" \n\tdata-id=\"e436dfa9\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-heading\" data-id=\"d298cebf\">\n\t<h2\tclass=\"heading block-heading__heading\"\n\tdata-id=\"e40e4fec\"\n>\n\tWho is it for?<\/h2><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper\" \n\tdata-id=\"b6f0ec9b\" \n\tdata-bg-on-inner=\"true\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-group\" data-id=\"ffe6a4bd\">\n\t<\/div>\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper\" \n\tdata-id=\"f2cf32b1\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-heading\" data-id=\"f4e405b8\">\n\t<h2\tclass=\"heading block-heading__heading\"\n\tdata-id=\"d579eaa5\"\n>\n\tWhy should I follow this training?<\/h2><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper\" \n\tdata-id=\"1343806f\" \n\tdata-bg-on-inner=\"true\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-columns\" data-id=\"d3beba31\">\n\t\n\n<div class=\"block-column\" data-id=\"a62d0c87\">\n\t\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"296061cc\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-icon\">\n\t<i class=\"icon block-icon__icon\" data-id=\"3951d967\"  aria-hidden=\"true\">\n\t<svg xmlns='http:\/\/www.w3.org\/2000\/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'><path d='M10.97 4.97a.75.75 0 0 1 1.07 1.05l-3.99 4.99a.75.75 0 0 1-1.08.02L4.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093 3.473-4.425a.267.267 0 0 1 .02-.022z'\/><\/svg><\/i><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"6a1d98f9\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-heading\" data-id=\"f2dd3b7a\">\n\t<h2\tclass=\"heading block-heading__heading\"\n\tdata-id=\"6f37b840\"\n>\n\tLearn about Clean Architecture<\/h2><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"1e967d4e\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-paragraph\" data-id=\"8e040f70\">\n\t<p class=\"paragraph block-paragraph__paragraph\" data-id=\"8cd12822\">\n\tUnderstand the architectural principle.<\/p><\/div>\n\t\t<\/div>\n\t<\/div>\n\n<\/div>\n\n\n\n<div class=\"block-column\" data-id=\"ce280a76\">\n\t\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"5ccbb95d\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-icon\">\n\t<i class=\"icon block-icon__icon\" data-id=\"da19fba1\"  aria-hidden=\"true\">\n\t<svg xmlns='http:\/\/www.w3.org\/2000\/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'><path d='M10.97 4.97a.75.75 0 0 1 1.07 1.05l-3.99 4.99a.75.75 0 0 1-1.08.02L4.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093 3.473-4.425a.267.267 0 0 1 .02-.022z'\/><\/svg><\/i><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"a06f486d\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-heading\" data-id=\"4ec45e23\">\n\t<h2\tclass=\"heading block-heading__heading\"\n\tdata-id=\"d2e96e66\"\n>\n\tBuild a real-world web app<\/h2><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"0ac0814e\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-paragraph\" data-id=\"56615807\">\n\t<p class=\"paragraph block-paragraph__paragraph\" data-id=\"85ad9432\">\n\tThis course will guide you in the end-to-end building of a real-world application.<\/p><\/div>\n\t\t<\/div>\n\t<\/div>\n\n<\/div>\n\n\n\n<div class=\"block-column\" data-id=\"3c5c54c6\">\n\t\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"ed075c2d\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-icon\">\n\t<i class=\"icon block-icon__icon\" data-id=\"6d91c6b4\"  aria-hidden=\"true\">\n\t<svg xmlns='http:\/\/www.w3.org\/2000\/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'><path d='M10.97 4.97a.75.75 0 0 1 1.07 1.05l-3.99 4.99a.75.75 0 0 1-1.08.02L4.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093 3.473-4.425a.267.267 0 0 1 .02-.022z'\/><\/svg><\/i><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"627fde44\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-heading\" data-id=\"79d1694e\">\n\t<h2\tclass=\"heading block-heading__heading\"\n\tdata-id=\"030b4241\"\n>\n\tUse it from an API and Blazor<\/h2><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"8c322a12\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-paragraph\" data-id=\"1644c89f\">\n\t<p class=\"paragraph block-paragraph__paragraph\" data-id=\"392d9a7a\">\n\tTo make it practical, you\u2019ll apply the knowledge from an API and a Blazor application.<\/p><\/div>\n\t\t<\/div>\n\t<\/div>\n\n<\/div>\n\n<\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper\" \n\tdata-id=\"df3883cd\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-image-carousel js-block-image-carousel\" data-id=\"02a4a8b8\">\n\t\t<h2\tclass=\"heading block-image-carousel__heading\"\n\tdata-id=\"554206ed\"\n>\n\tWhat does it look like?<\/h2>\n\t\t<div class=\"block-image-carousel__navigation\">\n\t\t\t<button\tclass=\"btn block-image-carousel__btn js-block-image-carousel-prev\"\n\tdata-id=\"c2a9ddbd\">\n\t<i class=\"icon btn__icon\" data-id=\"b9e25f16\"  aria-hidden=\"true\">\n\t<svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'><path d='M18.5 13a1 1 0 1 0 0-2v2ZM4.793 11.293a1 1 0 0 0 0 1.414l6.364 6.364a1 1 0 0 0 1.414-1.414L6.914 12l5.657-5.657a1 1 0 0 0-1.414-1.414l-6.364 6.364ZM18.5 11h-13v2h13v-2Z' fill='currentColor'\/><\/svg><\/i>\n\t\n\t<\/button><button\tclass=\"btn block-image-carousel__btn js-block-image-carousel-next\"\n\tdata-id=\"ae83da06\">\n\t<i class=\"icon btn__icon\" data-id=\"0eabaa0c\"  aria-hidden=\"true\">\n\t<svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'><path d='M5.5 11a1 1 0 1 0 0 2v-2Zm13.707 1.707a1 1 0 0 0 0-1.414l-6.364-6.364a1 1 0 1 0-1.414 1.414L17.086 12l-5.657 5.657a1 1 0 0 0 1.414 1.414l6.364-6.364ZM5.5 13h13v-2h-13v2Z' fill='currentColor'\/><\/svg><\/i>\n\t\n\t<\/button>\t\t<\/div>\n\n\t\t<div class=\"swiper block-image-carousel__container js-block-image-carousel-container\">\n\t\t\n\t\t\t<div class=\"swiper-wrapper\">\n\t\t\t\t\n<div class=\"js-block-image-carousel-item swiper-slide block-image-carousel__item\">\n\t\t\t<div class=\"js-block-image-carousel-item swiper-slide block-image-carousel__item-inner\">\n<div class=\"block-image\" data-id=\"4d667fe6\">\n\t<picture class=\"image block-image__image\" data-id=\"c840bbd8\">\n\n\t\n\t\n\t<img\n\t\tsrc=\"\/academy\/wp-content\/uploads\/sites\/4\/2024\/04\/Belgium-office-3-scaled.jpg\"\n\t\talt=\"\"\n\t\tclass=\"image__img block-image__image-img\"\n\t\/>\n<\/picture><\/div>\n<\/div>\n\t\t<\/div>\n\n<div class=\"js-block-image-carousel-item swiper-slide block-image-carousel__item\">\n\t\t\t<div class=\"js-block-image-carousel-item swiper-slide block-image-carousel__item-inner\">\n<div class=\"block-image\" data-id=\"0b0b58df\">\n\t<picture class=\"image block-image__image\" data-id=\"72a951fc\">\n\n\t\n\t\n\t<img\n\t\tsrc=\"\/academy\/wp-content\/uploads\/sites\/4\/2023\/10\/Header-OutSystems-6.jpg\"\n\t\talt=\"\"\n\t\tclass=\"image__img block-image__image-img\"\n\t\/>\n<\/picture><\/div>\n<\/div>\n\t\t<\/div>\n\n<div class=\"js-block-image-carousel-item swiper-slide block-image-carousel__item\">\n\t\t\t<div class=\"js-block-image-carousel-item swiper-slide block-image-carousel__item-inner\">\n<div class=\"block-image\" data-id=\"81d3aaf9\">\n\t<picture class=\"image block-image__image\" data-id=\"5b44bbf4\">\n\n\t\n\t\n\t<img\n\t\tsrc=\"https:\/\/academy.xebia.com\/wp-content\/uploads\/sites\/4\/2023\/08\/20230328-191741-JTI-scaled.jpg\"\n\t\talt=\"\"\n\t\tclass=\"image__img block-image__image-img\"\n\t\/>\n<\/picture><\/div>\n<\/div>\n\t\t<\/div>\n\n<div class=\"js-block-image-carousel-item swiper-slide block-image-carousel__item\">\n\t\t\t<div class=\"js-block-image-carousel-item swiper-slide block-image-carousel__item-inner\">\n<div class=\"block-image\" data-id=\"3c48d9c4\">\n\t<picture class=\"image block-image__image\" data-id=\"2918d32a\">\n\n\t\n\t\n\t<img\n\t\tsrc=\"https:\/\/academy.xebia.com\/wp-content\/uploads\/sites\/4\/2023\/09\/Xebia-Stock-Amsterdam-100_2560.jpg\"\n\t\talt=\"\"\n\t\tclass=\"image__img block-image__image-img\"\n\t\/>\n<\/picture><\/div>\n<\/div>\n\t\t<\/div>\n\n<div class=\"js-block-image-carousel-item swiper-slide block-image-carousel__item\">\n\t\t\t<div class=\"js-block-image-carousel-item swiper-slide block-image-carousel__item-inner\">\n<div class=\"block-image\" data-id=\"b7c9f989\">\n\t<picture class=\"image block-image__image\" data-id=\"accfdf23\">\n\n\t\n\t\n\t<img\n\t\tsrc=\"\/academy\/wp-content\/uploads\/sites\/4\/2023\/09\/Xebia-Lead-7-scaled.jpg\"\n\t\talt=\"\"\n\t\tclass=\"image__img block-image__image-img\"\n\t\/>\n<\/picture><\/div>\n<\/div>\n\t\t<\/div>\n\n<div class=\"js-block-image-carousel-item swiper-slide block-image-carousel__item\">\n\t\t\t<div class=\"js-block-image-carousel-item swiper-slide block-image-carousel__item-inner\">\n<div class=\"block-image\" data-id=\"9cf69072\">\n\t<picture class=\"image block-image__image\" data-id=\"cb8fee76\">\n\n\t\n\t\n\t<img\n\t\tsrc=\"\/academy\/wp-content\/uploads\/sites\/4\/2023\/09\/Xebia-Hilversum-office-scaled.jpg\"\n\t\talt=\"\"\n\t\tclass=\"image__img block-image__image-img\"\n\t\/>\n<\/picture><\/div>\n<\/div>\n\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\n\t<div class=\"block-image-carousel__pagination js-block-image-carousel-pagination swiper-pagination\"><\/div>\n<\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper\" \n\tdata-id=\"48c376f6\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-heading\" data-id=\"0b2d623b\">\n\t<h2\tclass=\"heading block-heading__heading\"\n\tdata-id=\"f8cfe91b\"\n>\n\tWhat else <br>should I know?<\/h2><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper\" \n\tdata-id=\"33c5ecb4\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-columns\" data-id=\"0d024d6e\">\n\t\n\n<div class=\"block-column\" data-id=\"26f53e35\">\n\t\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"ed579db3\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-paragraph\" data-id=\"dff6ed72\">\n\t<p class=\"paragraph block-paragraph__paragraph\" data-id=\"67d7b4a0\">\n\tAfter registration for this training, you will receive a confirmation email with practical information. A week before the training, we will ask you about any dietary wishes.<\/p><\/div>\n\t\t<\/div>\n\t<\/div>\n\n<\/div>\n\n\n\n<div class=\"block-column\" data-id=\"7bc9b34c\">\n\t\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"251d9572\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-bullet-list\">\n\t\t\t<p class=\"paragraph block-bullet-list__paragraph\" data-id=\"20216b74\">\n\tCourse information<\/p>\t<div class=\"block-bullet-list__columns\">\n\t\t\n\n<div class=\"block-bullet-item js-block-bullet-item\" data-id=\"2cd10408\">\n\t<i class=\"icon block-bullet-item__icon\" data-id=\"ebf14fb0\"  aria-hidden=\"true\">\n\t<svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'><path d='M11.25 11.25C11.4489 11.25 11.6397 11.329 11.7803 11.4697C11.921 11.6103 12 11.8011 12 12V15.75C12 15.9489 12.079 16.1397 12.2197 16.2803C12.3603 16.421 12.5511 16.5 12.75 16.5' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'\/><path d='M11.625 9C12.2463 9 12.75 8.49632 12.75 7.875C12.75 7.25368 12.2463 6.75 11.625 6.75C11.0037 6.75 10.5 7.25368 10.5 7.875C10.5 8.49632 11.0037 9 11.625 9Z' fill='currentColor'\/><\/svg><\/i><p class=\"paragraph block-bullet-item__paragraph\" data-id=\"76a2cf43\">\n\tTraining will consist of a healthy mix of theory, examples, and exercises.<\/p><\/div>\n\n\n\n<div class=\"block-bullet-item js-block-bullet-item\" data-id=\"ced7ba77\">\n\t<i class=\"icon block-bullet-item__icon\" data-id=\"b5ed81c8\"  aria-hidden=\"true\">\n\t<svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'><path d='M11.25 11.25C11.4489 11.25 11.6397 11.329 11.7803 11.4697C11.921 11.6103 12 11.8011 12 12V15.75C12 15.9489 12.079 16.1397 12.2197 16.2803C12.3603 16.421 12.5511 16.5 12.75 16.5' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'\/><path d='M11.625 9C12.2463 9 12.75 8.49632 12.75 7.875C12.75 7.25368 12.2463 6.75 11.625 6.75C11.0037 6.75 10.5 7.25368 10.5 7.875C10.5 8.49632 11.0037 9 11.625 9Z' fill='currentColor'\/><\/svg><\/i><p class=\"paragraph block-bullet-item__paragraph\" data-id=\"8bf67e11\">\n\tLunch is included.<\/p><\/div>\n\n\n\n<div class=\"block-bullet-item js-block-bullet-item\" data-id=\"cbea72f5\">\n\t<i class=\"icon block-bullet-item__icon\" data-id=\"5645e602\"  aria-hidden=\"true\">\n\t<svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'><path d='M11.25 11.25C11.4489 11.25 11.6397 11.329 11.7803 11.4697C11.921 11.6103 12 11.8011 12 12V15.75C12 15.9489 12.079 16.1397 12.2197 16.2803C12.3603 16.421 12.5511 16.5 12.75 16.5' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'\/><path d='M11.625 9C12.2463 9 12.75 8.49632 12.75 7.875C12.75 7.25368 12.2463 6.75 11.625 6.75C11.0037 6.75 10.5 7.25368 10.5 7.875C10.5 8.49632 11.0037 9 11.625 9Z' fill='currentColor'\/><\/svg><\/i><p class=\"paragraph block-bullet-item__paragraph\" data-id=\"e939152b\">\n\tTravel and accommodation expenses are not included.<\/p><\/div>\n\n\n\n<div class=\"block-bullet-item js-block-bullet-item\" data-id=\"c48d5449\">\n\t<i class=\"icon block-bullet-item__icon\" data-id=\"05159ea2\"  aria-hidden=\"true\">\n\t<svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'><path d='M11.25 11.25C11.4489 11.25 11.6397 11.329 11.7803 11.4697C11.921 11.6103 12 11.8011 12 12V15.75C12 15.9489 12.079 16.1397 12.2197 16.2803C12.3603 16.421 12.5511 16.5 12.75 16.5' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'\/><path d='M11.625 9C12.2463 9 12.75 8.49632 12.75 7.875C12.75 7.25368 12.2463 6.75 11.625 6.75C11.0037 6.75 10.5 7.25368 10.5 7.875C10.5 8.49632 11.0037 9 11.625 9Z' fill='currentColor'\/><\/svg><\/i><p class=\"paragraph block-bullet-item__paragraph\" data-id=\"2aa6c73e\">\n\tBasics of ASP.NET Core are expected to be known.<\/p><\/div>\n\n\t<\/div>\n<\/div>\n\t\t<\/div>\n\t<\/div>\n\n<\/div>\n\n<\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper\" \n\tdata-id=\"38d7db28\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div\n\tdata-id=\"d7dcca13\"\n\tclass=\"block-course-list js-block-course-list js-block-course-list-d7dcca13\"\n\t>\n\t<h2\tclass=\"heading block-course-list__heading\"\n\tdata-id=\"844e7af7\"\n>\n\tAlso interesting for you<\/h2><a class=\"btn block-course-list__btn\" title=\"View all training courses\" data-id=\"1c98ca12\" href=\"https:\/\/academy.xebia.com\/us\/training\/\">\n\t\n\t\t\t<span>View all training courses<\/span>\n\t\n\t<\/a>\n\t<div class=\"block-course-list__slider-wrapper\">\n\t\t<div class=\"block-course-list__slider\">\n\t\t\t<div\n\t\t\t\tclass=\"block-course-list__swiper js-block-course-list-swiper swiper\"\n\t\t\t\tdata-allow-keyboard-controls=\"1\"\n\t\t\t>\n\t\t\t\t<div class=\"swiper-wrapper block-course-list__swiper-wrapper\">\n\t\t\t\t\t<div class=\"course-list-item swiper-slide js-tippy-container-isolated\" data-id=\"e7c4aa9b\">\n\t<a class=\"btn course-list-item__btn course-list-item__heading-link\" title=\"Clean Architecture with ASP.NET Core 8 (BE)\" data-id=\"fb9c2bb1\" href=\"https:\/\/academy.xebia.com\/us\/training\/clean-architecture-with-asp-net-core-8-be\/\">\n\t\n\t\t\t<span>Clean Architecture with ASP.NET Core 8 (BE)<\/span>\n\t\n\t<\/a>\t\t\n\t<div class=\"course-list-item__details-row\">\n\t\t\t\t\t<div class=\"course-list-item__date\">\n\t\t\t\t\t\t\t<\/div>\n\t\t<a class=\"btn course-list-item__btn\" title=\"View training\" data-id=\"b48b5073\" href=\"https:\/\/academy.xebia.com\/us\/training\/clean-architecture-with-asp-net-core-8-be\/\">\n\t\n\t\t\t<span>View training<\/span>\n\t\n\t<\/a>\t<\/div>\n\n<\/div><div class=\"course-list-item swiper-slide js-tippy-container-isolated\" data-id=\"cb6a1344\">\n\t<a class=\"btn course-list-item__btn course-list-item__heading-link\" title=\"Clean Architecture with ASP.NET Core 8 (BE)\" data-id=\"5651d053\" href=\"https:\/\/academy.xebia.com\/us\/training\/clean-architecture-with-asp-net-core-8-be\/\">\n\t\n\t\t\t<span>Clean Architecture with ASP.NET Core 8 (BE)<\/span>\n\t\n\t<\/a>\t\t\n\t<div class=\"course-list-item__details-row\">\n\t\t\t\t\t<div class=\"course-list-item__date\">\n\t\t\t\t\t\t\t<\/div>\n\t\t<a class=\"btn course-list-item__btn\" title=\"View training\" data-id=\"c2af3181\" href=\"https:\/\/academy.xebia.com\/us\/training\/clean-architecture-with-asp-net-core-8-be\/\">\n\t\n\t\t\t<span>View training<\/span>\n\t\n\t<\/a>\t<\/div>\n\n<\/div><div class=\"course-list-item swiper-slide js-tippy-container-isolated\" data-id=\"b846df55\">\n\t<a class=\"btn course-list-item__btn course-list-item__heading-link\" title=\"Clean Architecture with ASP.NET Core 8 (BE)\" data-id=\"57ced57d\" href=\"https:\/\/academy.xebia.com\/us\/training\/clean-architecture-with-asp-net-core-8-be\/\">\n\t\n\t\t\t<span>Clean Architecture with ASP.NET Core 8 (BE)<\/span>\n\t\n\t<\/a>\t\t\n\t<div class=\"course-list-item__details-row\">\n\t\t\t\t\t<div class=\"course-list-item__date\">\n\t\t\t\t\t\t\t<\/div>\n\t\t<a class=\"btn course-list-item__btn\" title=\"View training\" data-id=\"c6b02c6f\" href=\"https:\/\/academy.xebia.com\/us\/training\/clean-architecture-with-asp-net-core-8-be\/\">\n\t\n\t\t\t<span>View training<\/span>\n\t\n\t<\/a>\t<\/div>\n\n<\/div><div class=\"course-list-item swiper-slide js-tippy-container-isolated\" data-id=\"0fe5f6b1\">\n\t<a class=\"btn course-list-item__btn course-list-item__heading-link\" title=\"Clean Architecture with ASP.NET Core 8 (BE)\" data-id=\"f3ee2a27\" href=\"https:\/\/academy.xebia.com\/us\/training\/clean-architecture-with-asp-net-core-8-be\/\">\n\t\n\t\t\t<span>Clean Architecture with ASP.NET Core 8 (BE)<\/span>\n\t\n\t<\/a>\t\t\n\t<div class=\"course-list-item__details-row\">\n\t\t\t\t\t<div class=\"course-list-item__date\">\n\t\t\t\t\t\t\t<\/div>\n\t\t<a class=\"btn course-list-item__btn\" title=\"View training\" data-id=\"5eae29b1\" href=\"https:\/\/academy.xebia.com\/us\/training\/clean-architecture-with-asp-net-core-8-be\/\">\n\t\n\t\t\t<span>View training<\/span>\n\t\n\t<\/a>\t<\/div>\n\n<\/div><div class=\"course-list-item swiper-slide js-tippy-container-isolated\" data-id=\"ccf7402a\">\n\t<a class=\"btn course-list-item__btn course-list-item__heading-link\" title=\"Clean Architecture with ASP.NET Core 8 (BE)\" data-id=\"13b04abe\" href=\"https:\/\/academy.xebia.com\/us\/training\/clean-architecture-with-asp-net-core-8-be\/\">\n\t\n\t\t\t<span>Clean Architecture with ASP.NET Core 8 (BE)<\/span>\n\t\n\t<\/a>\t\t\n\t<div class=\"course-list-item__details-row\">\n\t\t\t\t\t<div class=\"course-list-item__date\">\n\t\t\t\t\t\t\t<\/div>\n\t\t<a class=\"btn course-list-item__btn\" title=\"View training\" data-id=\"a8dfa8fa\" href=\"https:\/\/academy.xebia.com\/us\/training\/clean-architecture-with-asp-net-core-8-be\/\">\n\t\n\t\t\t<span>View training<\/span>\n\t\n\t<\/a>\t<\/div>\n\n<\/div><div class=\"course-list-item swiper-slide js-tippy-container-isolated\" data-id=\"2b0fea33\">\n\t<h2\tclass=\"heading course-list-item__heading\"\n\tdata-id=\"1770a449\"\n>\n\tCan\u2019t find the course you\u2019re looking for? There\u2019s more!<\/h2>\t\t\n\t<div class=\"course-list-item__details-row\">\n\t\t\t\t\t<div class=\"course-list-item__date\">\n\t\t\t\t\t\t\t<\/div>\n\t\t<a class=\"btn course-list-item__btn\" title=\"View all courses\" data-id=\"a32230c0\" href=\"https:\/\/academy.xebia.com\/us\/training\/\">\n\t\n\t\t\t<span>View all courses<\/span>\n\t\n\t<\/a>\t<\/div>\n\n<\/div>\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\t<\/div>\n\n\t<div class=\"block-course-list__controls swiper-pagination\"><\/div>\n<\/div>\n\t\t<\/div>\n\t<\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":105,"featured_media":0,"template":"","tags":[],"class_list":["post-54007","course","type-course","status-publish","hentry"],"acf":{"field_BrokersfeedIntroduction":"","field_BrokersfeedDescription":"","field_BrokersfeedFormat":"","field_BrokersfeedSubjects":"","field_BrokersfeedTakeaways":"","field_BrokersfeedTargetAudience":"","field_BrokersfeedPrerequisites":"","field_BrokersfeedCertificationValue":"","field_BrokersfeedNextSteps":"","field_BrokersfeedBanner":"","course_xebia_event_ids":"","course_xebia_event_group_id":"","course_xebia_discipline":"","course_xebia_sorting_order":5},"raw_content":null,"_links":{"self":[{"href":"https:\/\/academy.xebia.com\/us\/wp-json\/wp\/v2\/courses\/54007","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/academy.xebia.com\/us\/wp-json\/wp\/v2\/courses"}],"about":[{"href":"https:\/\/academy.xebia.com\/us\/wp-json\/wp\/v2\/types\/course"}],"author":[{"embeddable":true,"href":"https:\/\/academy.xebia.com\/us\/wp-json\/wp\/v2\/users\/105"}],"version-history":[{"count":4,"href":"https:\/\/academy.xebia.com\/us\/wp-json\/wp\/v2\/courses\/54007\/revisions"}],"predecessor-version":[{"id":56706,"href":"https:\/\/academy.xebia.com\/us\/wp-json\/wp\/v2\/courses\/54007\/revisions\/56706"}],"wp:attachment":[{"href":"https:\/\/academy.xebia.com\/us\/wp-json\/wp\/v2\/media?parent=54007"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/academy.xebia.com\/us\/wp-json\/wp\/v2\/tags?post=54007"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}