Bevezetés

Ma egy sokrészes segédletet indítok, amiben egy egyszerű web API-t fogunk összerakni. A segédletben kifejezetten a backend API-ra koncentrálunk, nem építünk UI-t hozzá.

Web API helye a teljes folyamatban

A példa projektben segítségével megpróbálom összefoglalni azokat a tervezési mintákat, fejlesztési elveket és eszközöket, amelyeket egy REST Web API létrehozásakor használunk. Egy nagyon egyszerű Web API alkalmazással fogunk kezdeni, ami úgy válik egyre összetettebbé, ahogy a segédletben haladunk.

Olyan modern REST API tervezési elveket akarok bemutatni, mint az OData és az API Endpoint-ok (MVC Controllerek helyett); integrációs tesztelésre szolgáló eszközöket, mint a SpecFlow; a Web API-k kódolásakor használható elterjedt tervezési mintákat (pl. Dependency Injection, Repository Pattern; CQRS Pattern); valamint egyéb hasznos csomagokat (mint a Swagger, AutoMapper, FluentValidation, stb.) Később részletesen is kifejtem a témákat (lásd: Szekciók)

Előfeltételek

Számítok rá, hogy tisztában vagy az Objektum Orientált Programozás koncepciójával.

A példák során ugyan el fogom magyarázni, ha valami különleges eszközt használunk a C# programozási nyelvből, de nem árt, ha legalább a nyelv alapfogalmait ismered.

Arra is számítok, hogy tudod, mi az a REST, hogyan működik a HTTP protokoll, mik azok az API Végpontok (endpoints), és mi az a JSON. Ezekről a témákról itt találsz egy kitűnő bevezető segédletet angol nyelven.

Hogy velem együtt kódolj, szükséged lesz a .Net 6.0 Szoftver Fejlesztési Csomagra (SDK) és egy fejlesztő eszközre. Személy szerint a Visual Studio 2002 Community Edition változatát ajánlom, ami tartalmazza a .Net 6.0 SDK-t is.

Az API fejlesztéséhez választhatsz más szerkesztő programot is, pl. a Visual Studio Code is remek választás. Ez esetben viszont kézzel kell letöltened a .Net 6.0 SDK-t. Célszerű feltenni hozzá a  C# extension for Visual Studio Code bővítményt, amivel jobb kódkiemelést és intellicensz szolgáltatásokat fogsz kapni.

Bevallom, a gépemen egymás mellett létezik a Visual Studio Community Edition és a Visual Studio Code — egyszerűen azért, mert bizonyos feladatokat a VSCode egyszerűen kényelmesebben meg tud oldani.

Az API kézi teszteléséhez a Postman az egyik legjobb eszköz, érdemes azt is telepíteni.

A példa projektről

A további bejegyzések “állatorvosi lova” egy végtelenül egyszerű projekt menedzsment rendszer backendje lesz, a hangzatos nevű “Advanced Project Manager API“, vagy röviden APM.API.

A végpontok projektekkel (Project) és felhasználókkal (User) kapcsolatos műveleteket valósítanak meg (létrehozás, olvasás, módosítás és törlés – CRUD). A projektek és a felhasználók között n:m kapcsolat létezik: minden felhasználó 0 vagy több projektben vehet részt, és minden projektnek 0 vagy több résztvevője lehet. A kapcsolat licensz (License) entitásokon keresztül valósul meg: egy Felhasználó valamilyen konkrét Engedéllyel kapcsolódik egy adott Projekthez (Read, Write, Admin), amelyet egy Licensz biztosít számára. Ugyanannak a Felhasználónak lehet több Licensze is ugyanahhoz a Projekthez, de valamennyi Licensze különböző Engedéllyel ruházza fel.

A Projektek állapotát Mérföldkő (Milestone) entitások tükrözik: minden Projekthez egy Mérföldkő tartozik, ami a Projekt aktuális állapotát fejezi ki (Not-Started, Blocked, In-Progress, Finishing, Compete, stb.). A Mérföldkövek nincsenek előre beégetve a rendszerbe, az API-n keresztül tetszőleges Mérföldköveket vehetünk fel.

Az elmondottakat az alábbi Entitás Diagram teszi szemléletessé:

A folytatásban

…megépítjük a Web API legelső változatát.


A leendő fejezetek

Ha meg akarod nevettetni Istent, mesélj neki a terveidről.

Woody Allen
  1. Építsünk Web API-t
  2. Készítsünk CRUD végpontokat, és teszteljük őket Postman-nel
  3. Adat szervízek és naplózás – Dependency Injection, Serilog
  4. Az adatok mentése valódi adatbázisba – Entity Framework
  5. Unit-tesztelés Mock objektumokkal és Coverage Riportok. Bevezetés a TDD-be
  6. User entitások kezelése – a Repository Pattern
  7. DTO és Model objektumok meppelése AutoMapper segítségével
  8. Az input adatok érvényességének ellenőrzése FluentValidation segítségével
  9. Konfigurálható szervízek – az Options minta és implementálása
  10. Felhagyunk a kivételekkel – az Operation Result minta és egy kis ízelítő a Benchmarkokból
  11. Búcsú a Controllerektől, bemutatjuk az API Végpontokat. A CQRS minta.
  12. Adat-kapcsolatok és a Unit of Work minta
  13. Integrációs Tesztek in-memory adatbázison. A SpecFlow bemutatkozik.
  14. Váltás MySQL adatbázisra Docker segítségével.
  15. A forráskód felküldése Azure DevOps-ba automatizált build pipeline segítségével
  16. Az API telepítése az Azure Felhőbe
  17. NuGet csomagok létrehozása Azure DevOps pipeline-ok segítségével
  18. Megbirkózunk a csomagok verzió számaival is. A GitVersion bemutatkozik.
  19. Felhasználók azonosítása JWT tokenekkel
  20. Adatok szűrése és lapozás. Bemutatjuk az OData szabványt.
  21. HATEOAS – Ön-dokumentáló API végpontok
  22. API életciklus – API-Verziók és “Értékcsökkenés”

Hasznos linkek

  1. FreeCodeCamp.org : RESTful Services Part I: HTTP in a Nutshell 
  2. Json.Org : An Introduction to Json 
  3. MDN Web Docs: An overview of HTTP 
  4. Microsoft.Docs: C# Documentation 

Letöltési oldalak

  1. C# Extension for Visual Studio Code 
  2. .Net 6.0 SDK 
  3. Postman Download Site 
  4. Visual Studio 2022 
  5. Visual Studio Code 

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük