Deel 4 - HeinPauwelyn/IoTShop GitHub Wiki

Doelstelling

We gaan onze webshop uitbreiden met een aantal API’s. Het is de bedoeling dat je eerst de API’s maakt en daarna deze gaat beheren via Azure API Management.

Stappenplan

Stap 1

We gaan het project moeten opsplitsen in 3 delen:

  • Web Applicatie
  • API Applicatie
  • Common (Models + Repos + Context)

Bij mij ziet dit er als volgt uit:

image

Voeg ook een "Class Library" project toe:

image

Verplaats volgende onderdelen uit het originele webproject naar het common project:

  • Context
  • Repositories
  • Models (deze die u zelf gemaakt hebt of gekregen hebt van mij)
  • Services

Zorg ervoor dat het common project compileert. Welke NuGet packages zal u nog moeten toevoegen om dit te doen werken?

Indien het common project compileert dan kan het webproject opruimen en de klassen die nu in common zitten verwijderen uit het webproject. Daarna moet u een referentie leggen vanuit het webproject naar het common project. Compileer alles en zorg dat het werk.

Als bovenstaande lukt dan hebt u het datagedeelte gesplits van het webproject. We kunnen nu het data deel opnieuw gebruiken in het API project.

Stap 2

Voeg dus een API project toe:

image

Leg een referentie naar het "common" project zodat we vanuit het API project toegang hebben de services, models en repositories.

In het API project moeten we ook Unity toevoegen. Via nuget voegen we Unity.WebAPI toe. Nu zou u zelf de rest van de Unity configuratie moet kunnen vervolledigen.

Stap 3

Voeg nu zelf een aantal API controllers toe aan het project. Één voorbeeld kan u hieronder al vast vinden:

public class ProgrammingFrameworkController : ApiController
{
    private ICatalogService catalogService = null;
    
    public ProgrammingFrameworkController(ICatalogService catalogService)
    {
        this.catalogService = catalogService;
    } 
    
    [HttpGet]
    [Route("programmingframework")]
    public IEnumerble<ProgrammingFramework> Get()
    {
        return catalogservice.GetProgrammingFrameworks();
    }

    [HttpGet]
    [Route("progammingframework/{id}"]
    public ProgrammingFramework GetById(int id)
    {
        return catalogservice.GetProgrammingFramework(id);
    }
}

Probeer nu zelf zoveel mogelijk functionaliteit te voorzien in de API. Meestal ga je hier per model een controller hebben. Kijk ook goed welke routes je zal definiëren.

Als laatste stap moet u de NuGet package "Swashbuckle" toevoegen. Dit hebben we nodig voor de generatie van de Swagger file bij het configureren van Azure API Management.

Stap 4

Als de API werkt kan u deze publishen. U zal een aparte Azure Web App moeten maken op de API te hosten. Dit heeft te maken met security, weet u nog waarom?

Stap 5

Maal een Azure API Management Service aan. Opgepast, dit kan even duren.

image

Eens de API Management instantie is aangemaakt, kan u via de knop “Manage” onderaan de API configureren.

Stap 6

Maak twee "API Products" aan (de andere default producten mogen weg):

  • Free
    • 5 calls per minuut
  • Professional
    • Gebruiker moet registeren
    • Jij moet goedkeuren
    • Access Key nodig bij communicatie

Test zowel de rate limit bij "Free" uit als ook de communicatie met de access key bij het "Professional" product. U zal voor dit laatste een console applicatie moeten maken.

Probeer zelf eens de developer portal te wijzigen. Wijzig de teksten, eventueel de kleuren. Zorg voor een wat profi look & feel.

Stap 7

Zorg ervoor dat we niet meer kunnen surfen naar de Azure Web API, nu staat dit nog hopen. U zal dus het IP moeten white listen zoals gezien in de theorie.