web apis mit asp.net mvc core 1
TRANSCRIPT
![Page 1: Web APIs mit ASP.NET MVC Core 1](https://reader034.vdocuments.us/reader034/viewer/2022052705/588a12ac1a28ab132f8b5bcb/html5/thumbnails/1.jpg)
1
Web APIs mit ASP.NET Core MVC 1.0
Manfred Steyer
twitter.com/ManfredSteyer
ManfredSteyer
Über mich …
Manfred Steyer
Trainer & Berater
Angular & ASP.NET
Page 2
![Page 2: Web APIs mit ASP.NET MVC Core 1](https://reader034.vdocuments.us/reader034/viewer/2022052705/588a12ac1a28ab132f8b5bcb/html5/thumbnails/2.jpg)
2
Ziel
Erweiterte Aspekte von Web APIs mit MVC
Core 1 anhand eines Beispiels kennen lernen.
Folie 3
Zielgruppe
Personen mit grundlegender Erfahrung mit
Web APIs unter .NET
Folie 4
![Page 3: Web APIs mit ASP.NET MVC Core 1](https://reader034.vdocuments.us/reader034/viewer/2022052705/588a12ac1a28ab132f8b5bcb/html5/thumbnails/3.jpg)
3
Inhalt
Hosting
Routing
Http-Antworten beeinflussen
Formatter konfigurieren
Eigene Formatter
Security (JWT)
User Secrets
Meta-Daten mit Swagger
Proxy-GenerierungFolie 5
(SELF-)HOSTING
Page 6
![Page 4: Web APIs mit ASP.NET MVC Core 1](https://reader034.vdocuments.us/reader034/viewer/2022052705/588a12ac1a28ab132f8b5bcb/html5/thumbnails/4.jpg)
4
Hosting
Folie 7
Se
rve
r
We
b-F
ram
ew
ork
We
b-A
pp
lica
tion
Mid
dle
ware
1
Mid
dle
ware
2
Mid
dle
ware
…
Mid
dle
ware
n
Anfrage
Antwort
Host-Prozess
HTTP
Konfiguration der Pipeline
Folie 8
public class Startup{
public void ConfigureServices(IServiceCollection services){
[…]services.AddMvc()[…]
}
public void Configure(IApplicationBuilder app) {
[…]app.UseIISPlatformHandler();app.UseStaticFiles();app.UseMvc();[…]
}}
![Page 5: Web APIs mit ASP.NET MVC Core 1](https://reader034.vdocuments.us/reader034/viewer/2022052705/588a12ac1a28ab132f8b5bcb/html5/thumbnails/5.jpg)
5
DEMO
Page 9
ROUTING
Page 10
![Page 6: Web APIs mit ASP.NET MVC Core 1](https://reader034.vdocuments.us/reader034/viewer/2022052705/588a12ac1a28ab132f8b5bcb/html5/thumbnails/6.jpg)
6
Was ist Routing?
Url Action-Methode
Folie 11
Web APIs in MVC Core 1
Kein eigenes Routing für Web APIs
Selbe Konzept, wie für MVC-Anwendungen
/controller/action
Routing berücksichtigt keine URL-Parameter
Folie 13
![Page 7: Web APIs mit ASP.NET MVC Core 1](https://reader034.vdocuments.us/reader034/viewer/2022052705/588a12ac1a28ab132f8b5bcb/html5/thumbnails/7.jpg)
7
Web API mit Attribut-basierten Routen
Folie 18
[Route("api/[controller]")]public class FlugController: Controller{
[HttpGet("{id}")]public Flug GetById(int id) { […] }
[HttpGet("byRoute")]public List<Flug> GetByRoute(string von, string nach) { […] }
[HttpPost]public void PostFlug([FromBody] Flug flug) { […] }
}
Web API mit Attribut-basierten Routen
Folie 19
[Route("api/[controller]")]public class FlugController: Controller{
// GET api/flug/{id}[HttpGet("{id}")]public Flug GetById(int id) { […] }
[HttpGet("byRoute")]public List<Flug> GetByRoute(string von, string nach) { […] }
[HttpPost]public void PostFlug([FromBody] Flug flug) { […] }
}
![Page 8: Web APIs mit ASP.NET MVC Core 1](https://reader034.vdocuments.us/reader034/viewer/2022052705/588a12ac1a28ab132f8b5bcb/html5/thumbnails/8.jpg)
8
Web API mit Attribut-basierten Routen
Folie 20
[Route("api/[controller]")]public class FlugController: Controller{
// GET api/flug/{id}[HttpGet("{id}")]public Flug GetById(int id) { […] }
// GET api/flug/byRoute?von=...&nach=...[HttpGet("byRoute")]public List<Flug> GetByRoute(string von, string nach) { […] }
[HttpPost]public void PostFlug([FromBody] Flug flug) { […] }
}
Web API mit Attribut-basierten Routen
Folie 21
[Route("api/[controller]")]public class FlugController: Controller{
// GET api/flug/{id}[HttpGet("{id}")]public Flug GetById(int id) { […] }
// GET api/flug/byRoute?von=...&nach=...[HttpGet("byRoute")]public List<Flug> GetByRoute(string von, string nach) { […] }
// POST api/flug[HttpPost]public void PostFlug([FromBody] Flug flug) { […] }
}
![Page 9: Web APIs mit ASP.NET MVC Core 1](https://reader034.vdocuments.us/reader034/viewer/2022052705/588a12ac1a28ab132f8b5bcb/html5/thumbnails/9.jpg)
9
Migration?
Microsoft.AspNet.Mvc.WebApiCompatShim
Folie 22
DEMO
Page 23
![Page 10: Web APIs mit ASP.NET MVC Core 1](https://reader034.vdocuments.us/reader034/viewer/2022052705/588a12ac1a28ab132f8b5bcb/html5/thumbnails/10.jpg)
10
DEMO: HTTP-ANTWORT BEEINFLUSSEN
Page 24
DEMO: FORMATTERKONFIGURIEREN
Page 25
![Page 11: Web APIs mit ASP.NET MVC Core 1](https://reader034.vdocuments.us/reader034/viewer/2022052705/588a12ac1a28ab132f8b5bcb/html5/thumbnails/11.jpg)
11
DEMO: EIGENE FORMATTER
Page 26
SECURITY
Page 35
![Page 12: Web APIs mit ASP.NET MVC Core 1](https://reader034.vdocuments.us/reader034/viewer/2022052705/588a12ac1a28ab132f8b5bcb/html5/thumbnails/12.jpg)
12
Authentication via Benutzer/Passwort
HTTP-Basic via IIS oder HttpListener
Eigene HTTP-Middleware
Folie 36
Authentication via Tokens
JwtBearerAuthentication-Middleware
Prüft JWT-Tokens
Übernimmt Inhalt aus JWT-Token in User-Objekt
Folie 37
![Page 13: Web APIs mit ASP.NET MVC Core 1](https://reader034.vdocuments.us/reader034/viewer/2022052705/588a12ac1a28ab132f8b5bcb/html5/thumbnails/13.jpg)
13
OAuth 2 – Prinzipieller Ablauf
Folie 38
Client
Authorization-Server
Resource-Server
3. Token
Ein zentrales Benutzerkonto
Auth. von Client entkoppelt
Flexibilität durch Token
DEMO(IDENTITYSERVER3)
Page 39
![Page 14: Web APIs mit ASP.NET MVC Core 1](https://reader034.vdocuments.us/reader034/viewer/2022052705/588a12ac1a28ab132f8b5bcb/html5/thumbnails/14.jpg)
14
UserSecrets
Anwendungs-Einstellungen, die Entwickler nicht ins
Projekt aufnehmen möchte
Personenbezogener Connection-String
Passwort
Kann am Rechner abgelegt und von dort geladen
werden
Nur für Entwicklung sinnvoll!
Folie 40
DEMO
Page 41
![Page 15: Web APIs mit ASP.NET MVC Core 1](https://reader034.vdocuments.us/reader034/viewer/2022052705/588a12ac1a28ab132f8b5bcb/html5/thumbnails/15.jpg)
15
META-DATEN VIA SWAGGER
Page 42
Swagger
JSON-basierte Metadatenformat für Web APIs
Weit verbreitet
Kein offizieller Standard
Folie 43
![Page 16: Web APIs mit ASP.NET MVC Core 1](https://reader034.vdocuments.us/reader034/viewer/2022052705/588a12ac1a28ab132f8b5bcb/html5/thumbnails/16.jpg)
16
Swagger
Folie 44
JSON-Schema für Datentypen
Operationen (Verb, Url,
Datentypen für Anfrage und Antworten)
SWASHBUCKLE
Page 45
![Page 17: Web APIs mit ASP.NET MVC Core 1](https://reader034.vdocuments.us/reader034/viewer/2022052705/588a12ac1a28ab132f8b5bcb/html5/thumbnails/17.jpg)
17
Swashbuckle
Swagger-Implementierung für
ASP.NET MVC 6
Installation via NuGet
Startup.ConfigureServices:
services.AddSwaggerGen();
Startup.Configure
app.UseSwaggerGen(); -- Swagger-Dokument via /swagger
app.UseSwaggerUi(); -- Swaager-UI via /swagger/ui
Folie 46
DEMO
Page 47