In the previous posting we saw how to create an API to get all the cars in our database. In this posting we’ll look at the remaining CRUD (Create Review Update Delete) operations.
As you may remember, we created a controller named CarController. ASP.NET will strip off the word Controller, leaving us with Car, which we will use to access the endpoints of our API.
An endpoint is just a URL that takes us to the operation we want.
We looked at GetAll, let’s take a look at Get. In this case, we have an id for the car we want, but we want all the details of that car. Simple!
First we need a method in our controller:
[HttpGet("{id}")] public async Task<ActionResult<Car>> Get(int id) { var car = await _carRepository.Get(id); if (car == null) { return NotFound(); } return car; }
Notice that next to the HttpGet attribute we indicate that the endpoint will take the id of the car we want
[HttpGet("{id}")]
This means we need to modify the URL to access the endpoint by adding the actual id of the desired record.
The first thing we do is call the repository, passing in the id.
public async Task<Car?> Get(int id) { var query = "select * from car where id=@id"; using var db = databaseConnectionFactory.GetConnection(); return await db.QuerySingleOrDefaultAsync<Car>(query, new {id}); }
In the Get method of the repo we create our query, get our connection and execute the query returning the value we retrieved (if any). This is very close to what we did previously.
Back in the controller, we check to ensure that we received a Car. If not, we return NotFound which is a shorthand way of returning a 404 message. Otherwise we return the Car as a Json object. You can see this in Postman:
We’ll issue a Get command passing in the URL, ending with the id of the car we want (in this case 4)
Notice that we get back a 200, indicating success. In the body of the returned Json we get back all the details of the Car. (If you decide to use DTOs you can get whatever subset of the information makes sense):
Post
Adding a Car to the database is quite similar. We need a method in the controller and one in the repo. Here is the controller method:
[HttpPost] public async Task<ActionResult<Car>> Post([FromBody] Car car) { try { car = await _carService.Insert(car); } catch (Exception e) { return BadRequest(e); } return CreatedAtAction(nameof(Get), new { id = car.Id }, car); }
Look at the attribute in the parameter ([FromBody]. This indicates to the API that the data needed to insert this Car will be in the body of the call. The alternative is FromQuery. You can, in fact, use both in one call.
Note: CreatedAction causes a return code of 201, which is what we want. Here’s the body we’ll insert:
When we click Send this data is sent to the API which returns 201 (created) and in the body of the returned data we see the new id assigned to this car
Service Class
Notice that this time, instead of calling the Repo directly, the method in the controller calls into a service class. A service class is a great way to get the logic out of the controller, where it does not belong, without putting it into the repo, where it also does not belong.
Here’s the top of the CarService
public class CarService : ICarService { private readonly ICarRepository _carRepository; public CarService(ICarRepository carRepository) { _carRepository = carRepository; } public async Task<Car> Insert(Car car) { var newId = await _carRepository.UpsertAsync(car); if (newId > 0) { car.Id = newId; } else { throw new Exception("Failed to insert car"); } return car; }
All the logic associated with this insert (e.g., making sure we get back a legitimate id from the repository, etc.) is encapsulated in the service.
This leaves the repository free to just talk to the database,
public async Task<int> UpsertAsync(Car car) { using var db = databaseConnectionFactory.GetConnection(); var sql = @" DECLARE @InsertedRows AS TABLE (Id int); MERGE INTO Car AS target USING (SELECT @Id AS Id, @Name AS Name, @Model_Year AS Model_Year, @Is_Deleted AS Is_Deleted, @Origin AS origin ) AS source ON target.Id = source.Id WHEN MATCHED THEN UPDATE SET Name = source.Name, Model_Year = source.Model_Year, Is_Deleted = source.Is_Deleted, Origin = source.Origin WHEN NOT MATCHED THEN INSERT (Name, Model_Year, Is_Deleted, Origin) VALUES (source.Name, source.Model_Year, source.Is_Deleted, source.Origin) OUTPUT inserted.Id INTO @InsertedRows ; SELECT Id FROM @InsertedRows; "; var newId = await db.QuerySingleOrDefaultAsync<int>(sql, car); return newId == 0 ? car.Id : newId; }
Rather than having an insert and an update method, we combine that logic into this upsert method. This is a common idiom for database manipulation.
Note: to make this work, be sure to fill in all the fields for a car (or at least as many as you want to have in the Database.
Delete
As noted earlier, we will implement a soft delete; that is, rather than actually removing the data from the database, we’ll just set the is_deleted column to true. This allows us to reverse the action, and make the row not-deleted by simply changing that value to false.
[HttpDelete(“{id}”)]
public async Task<IActionResult> Delete(int id)
{
try
{
await _carService.Delete(id);
}
catch (Exception e)
{
return BadRequest(e);
}
return NoContent();
}
As you would expect, the endpoint takes an id (the id of the car we want to delete). The controller then hands that off to the service, which calls the repository which, in turn, marks that id as deleted:
public async Task<int> DeleteAsync(int id) { using var db = databaseConnectionFactory.GetConnection(); var query = "UPDATE car SET Is_Deleted = 1 WHERE Id = @Id"; return await db.ExecuteAsync(query, new { Id = id }); }
If you are comfortable with SQL none of this will be very surprising. The key walkaway is:
Summary
In this post we saw that endpoints are just URLs with (potentially) data in the body of the request. The controller handles the URL and in our case passes the id or other data to the service. The service handles the (business) logic and then delegates talking to the database to the repository.
Book
This posting is excerpted from my forthcoming book Building APIs with .NET and C# to be released next year by Packt.
945449 137873No a lot more s . All posts of this qaulity from now on 679988
I am truly pleased to glance at this web site posts which contains plenty of useful information, thanks for
providing such information.
Here is my blog post; Mounfit Weight Loss
заборы металлические из профнастила https://zaborizproflista.ru/iz-profnastila .
Keep on working, great job!
gulf cup games
Heya! I’m at work browsing your blog from my new iphone! Just wanted to say I love reading your blog and look forward to all your posts! Keep up the fantastic work!
prepaid Zain
Thank you, I have recently been searching for information approximately this topic for ages and yours is the best I have came upon so far. However, what concerning the conclusion? Are you certain in regards to the source?
my Zain
I got this website from my buddy who informed me concerning this site and now this time I am visiting this site and reading very informative posts at this place.
prepaid Zain
Thanks for another informative site. The place else may I get that kind of info written in such an ideal means? I’ve a venture that I am just now operating on, and I have been at the glance out for such information.
https://www.merlot.org/merlot/viewMember.htm?id=1483483
Howdy! This is my first visit to your blog! We are a collection of volunteers and starting a new initiative in a community in the same niche. Your blog provided us useful information to work on. You have done a extraordinary job!
Hi this is somewhat of off topic but I was wanting to know if blogs use WYSIWYG editors or if you have to manually code with HTML. I’m starting a blog soon but have no coding skills so I wanted to get advice from someone with experience. Any help would be greatly appreciated!
https://unison.kh.ua/yak-obraty-sklo-ta-korpusy-dlya-remontu-far-na-audi-rekomendacziyi-ekspertiv
Hi colleagues, nice post and nice arguments commented here, I am in fact enjoying by these.
Also visit my webpage; expert review
cialis 5 mg 28 compresse prezzo : a medication containing tadalafil, is used for erectile dysfunction and benign prostatic hyperplasia. In Italy, 28 tablets of Cialis 5 mg is priced at around €165.26, though prices vary by pharmacy and promotions. Generic options, like Tadalafil DOC Generici, range from €0.8–€2.6 per tablet, offering a cheaper option. Consult a doctor, as a prescription is needed.
Вывод из запоя обязателен, если:
Подробнее – вывод из запоя в химках
Hey there I am so thrilled I found your webpage, I really found you by mistake, while I was researching on Askjeeve for something else, Regardless I am here now and would just like to say kudos for a marvelous post and a all round exciting blog (I also love the theme/design), I don’t have time to read it all at the moment but I have saved it and also added your RSS feeds, so when I have time I will be back to read more, Please do keep up the awesome jo.
http://yogicentral.science/index.php?title=pricebroussard4429
Эта публикация погружает вас в мир увлекательных фактов и удивительных открытий. Мы расскажем о ключевых событиях, которые изменили ход истории, и приоткроем завесу над научными достижениями, которые вдохновили миллионы. Узнайте, чему может научить нас прошлое и как применить эти знания в будущем.
Детальнее – https://tdc.edu.vn/img_0026
Hello, after reading this remarkable paragraph i am also delighted to share my familiarity here with friends.
https://hubpages.com/@gallonanger3
Hey I know this is off topic but I was wondering if you knew of any widgets I could add to my blog that automatically tweet my newest twitter updates. I’ve been looking for a plug-in like this for quite some time and was hoping maybe you would have some experience with something like this. Please let me know if you run into anything. I truly enjoy reading your blog and I look forward to your new updates.
Melbet
Momi — это бренд, предлагающий качественные товары для мам и малышей. На momi вы найдете широкий ассортимент детских товаров, отвечающих современным стандартам безопасности и комфорта. Покупайте оригинальную продукцию МОМИ онлайн!
Momi — это бренд, предлагающий качественные товары для мам и малышей. На моми официальный сайт вы найдете широкий ассортимент детских товаров, отвечающих современным стандартам безопасности и комфорта. Покупайте оригинальную продукцию МОМИ онлайн!
Thank you for the good writeup. It actually used to be a leisure account it. Glance complicated to far added agreeable from you! However, how can we communicate?
how to check zain balance
Профессиональный вывод из запоя – это комплексная медицинская услуга, направленная на безопасное и оперативное лечение пациентов, столкнувшихся с алкогольной интоксикацией. В Донецке ДНР высококвалифицированные наркологи оказывают помощь на дому, что позволяет начать детоксикацию организма в комфортной и привычной обстановке. Такой подход обеспечивает индивидуальную терапию, всестороннюю поддержку и полную конфиденциальность, что особенно важно для тех, кто предпочитает получать лечение вне стационаров.
Ознакомиться с деталями – http://vyvod-iz-zapoya-donetsk-dnr00.ru
В условиях Донецка ДНР профессиональный вывод из запоя на дому организован по отлаженной схеме, которая включает несколько последовательных этапов. Такой комплексный подход позволяет не только быстро вывести токсичные вещества из организма, но и обеспечить стабильное восстановление всех систем организма.
Подробнее тут – вывод из запоя на дому цена
Применение автоматизированных систем дозирования гарантирует точное введение медикаментов, что минимизирует риск передозировки и побочных эффектов. Постоянный мониторинг жизненно важных показателей даёт врачу возможность оперативно корректировать терапевтическую схему, обеспечивая максимальную безопасность процедуры.
Получить дополнительную информацию – https://vyvod-iz-zapoya-donetsk-dnr00.ru/vyvod-iz-zapoya-kruglosutochno-doneczk-dnr
Незамедлительно после вызова нарколог приезжает на дом для проведения первичного осмотра. Врач измеряет жизненно важные показатели, такие как пульс, артериальное давление и температура, и собирает краткий анамнез для оценки степени алкогольной интоксикации. Этот этап является фундаментом для составления персонализированного плана лечения.
Узнать больше – vyvod-iz-zapoya-kruglosutochno donetsk
Этот информативный текст отличается привлекательным содержанием и актуальными данными. Мы предлагаем читателям взглянуть на привычные вещи под новым углом, предоставляя интересный и доступный материал. Получите удовольствие от чтения и расширьте кругозор!
Подробнее можно узнать тут – https://jeskesenzoe.nl/hallo-wereld
На этом этапе специалист уточняет продолжительность запоя, тип употребляемого алкоголя и наличие сопутствующих заболеваний, что позволяет разработать персонализированный план терапии и оперативно выбрать методы детоксикации.
Разобраться лучше – капельница от запоя вызов
Снятие ломки в клинике «Эдельвейс» – это комплекс мероприятий, направленный на быстрое облегчение симптоматики и стабилизацию внутренних процессов организма. Наш подход включает комплексную диагностику, медикаментозную терапию, поддерживающие процедуры и психологическое сопровождение, что помогает пациенту не только справиться с острой фазой ломки, но и закладывает основу для дальнейшей реабилитации и предотвращения рецидивов.
Ознакомиться с деталями – snyatie lomki ekaterinburg
В клинике «Трезвая Жизнь» для эффективного вывода организма из запоя используется комплексный подход, который включает применение различных групп препаратов. Приведенная ниже таблица отражает основные компоненты нашей терапии и их функции:
Выяснить больше – наркологический вывод из запоя в екатеринбурге
Эта информационная статья охватывает широкий спектр актуальных тем и вопросов. Мы стремимся осветить ключевые факты и события с ясностью и простотой, чтобы каждый читатель мог извлечь из нее полезные знания и полезные инсайты.
Подробнее можно узнать тут – https://www.workingcode.in/2023/06/27/use-case-ansible-integration-via-flow-designer-servicenow
Как отмечает главный врач клиники, кандидат медицинских наук Сергей Иванов, «мы создали систему, при которой пациент получает помощь в течение часа — независимо от дня недели и времени суток. Это принципиально меняет шансы на выздоровление».
Исследовать вопрос подробнее – наркологическая клиника клиника помощь
Группа препаратов
Получить больше информации – ломка от наркотиков город
Наркологическая клиника «Эдельвейс» в Екатеринбурге специализируется на оказании оперативной и квалифицированной помощи при снятии ломки. Наши специалисты обладают многолетним опытом работы и применяют современные методики для безопасного и эффективного лечения абстинентного синдрома. Мы работаем круглосуточно, что позволяет оказывать помощь в любое время суток, обеспечивая анонимность и конфиденциальность каждого пациента.
Выяснить больше – https://snyatie-lomki-ekb8.ru/snyatie-lomki-na-domu-v-ekb
При тяжелых формах алкогольной интоксикации своевременное вмешательство критически важно для предотвращения опасных осложнений. В Луганске ЛНР специалисты по наркологии предоставляют услугу экстренной капельничной терапии на дому, что позволяет быстро снизить токсическую нагрузку и стабилизировать работу жизненно важных органов. Такой метод лечения позволяет обеспечить высокую эффективность терапии в комфортной, привычной для пациента обстановке, при этом сохраняется полная конфиденциальность.
Узнать больше – поставить капельницу от запоя
Специалист уточняет продолжительность запоя, тип употребляемого алкоголя и наличие сопутствующих заболеваний. Такой подробный анализ позволяет подобрать оптимальные методы детоксикации и снизить риск осложнений.
Выяснить больше – http://kapelnica-ot-zapoya-lugansk-lnr0.ru/
Группа препаратов
Узнать больше – http://snyatie-lomki-nnovgorod8.ru/
В основе нашей методики — комплексный подход, сочетающий медицинскую точку зрения и психологические технологии. Мы не ограничиваемся снятием абстиненции: задача клиники — помочь пациенту обрести новую мотивацию, развить навыки противостояния стрессам и возобновить социальную активность. Работа строится на трёх ключевых принципах:
Получить дополнительную информацию – http://
Срочный вызов врача на дом необходим при появлении следующих симптомов:
Узнать больше – нарколог на дом цена
Во всех этих случаях промедление может стоить слишком дорого. Наркологическая помощь должна быть оказана немедленно — либо на дому, либо в условиях клиники.
Получить больше информации – https://vyvod-iz-zapoya-v-himki1.ru/narkolog-vyvod-iz-zapoya-v-himkah/
Наши специалисты оказывают экстренную помощь по четко отработанной методике, главная задача которой – оперативное снятие симптомов острой интоксикации и абстинентного синдрома, восстановление работы внутренних органов и создание оптимальных условий для последующей реабилитации. Опытный нарколог на дому проведет тщательную диагностику, составит индивидуальный план лечения и даст необходимые рекомендации по дальнейшему выздоровлению.
Разобраться лучше – narcolog-na-dom-nnovgorod8.ru/
На этом этапе специалист уточняет длительность запоя, тип употребляемого алкоголя и наличие сопутствующих заболеваний. Тщательный анализ этих данных позволяет разработать персонализированный план лечения, что существенно снижает риск осложнений.
Изучить вопрос глубже – нарколог на дом вывод из запоя в калининграде
719520 949993Sweet internet site , super pattern , quite clean and utilize friendly . 826635
В нашей практике сочетаются несколько видов вмешательства: медико-биологическое, психологическое и социальное. Сначала проводится полная диагностика, включая лабораторные анализы и оценку работы сердца, печени, почек, а также психодиагностические тесты. После этого начинается этап детоксикации с внутривенными капельницами, которые выводят токсины, нормализуют водно-солевой баланс и восстанавливают основные функции организма. Далее мы применяем медикаментозную поддержку для стабилизации артериального давления, купирования тревожных симптомов, нормализации сна и уменьшения болевого синдрома.
Получить дополнительную информацию – narkologicheskaya klinika mytischi
Мы не делаем «массовых решений»: каждый пациент для нас — уникальная история, и мы строим терапию, исходя из его состояния, целей и личных возможностей. Наша задача — не просто временно облегчить симптомы, а дать человеку реальные инструменты для жизни без зависимости.
Ознакомиться с деталями – http://narkologicheskaya-klinika-mytishchi1.ru/narkologicheskaya-klinika-ceny-v-mytishchah/
Лечение нарколога на дому в Калининграде организовано по четко отлаженной схеме, позволяющей максимально оперативно стабилизировать состояние пациента и начать процесс детоксикации.
Детальнее – нарколог на дом вывод калининград
Обращение за помощью нарколога на дому в Архангельске имеет множество преимуществ, среди которых:
Получить дополнительные сведения – https://kapelnica-ot-zapoya-arkhangelsk00.ru/kapelnicza-ot-zapoya-na-domu-arkhangelsk/
На данном этапе врач уточняет длительность запоя, тип употребляемого алкоголя и наличие сопутствующих заболеваний. Тщательный анализ этих данных позволяет оперативно сформировать индивидуальный план лечения и выбрать оптимальные методы детоксикации.
Углубиться в тему – https://kapelnica-ot-zapoya-arkhangelsk00.ru