SlideShare ist ein Scribd-Unternehmen logo
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
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
3
Inhalt
Hosting
Routing
Http-Antworten beeinflussen
Formatter konfigurieren
Eigene Formatter
Security (JWT)
User Secrets
Meta-Daten mit Swagger
Proxy-Generierung
Folie 5
(SELF-)HOSTING
Page  6
4
Hosting
Folie 7
Server
Web-Framework
Web-Application
Middleware1
Middleware2
Middleware…
Middlewaren
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();
[…]
}
}
5
DEMO
Page  9
ROUTING
Page  10
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
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) { […] }
}
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) { […] }
}
9
Migration?
Microsoft.AspNet.Mvc.WebApiCompatShim
Folie 22
DEMO
Page  23
10
DEMO: HTTP-ANTWORT
BEEINFLUSSEN
Page  24
DEMO: FORMATTER
KONFIGURIEREN
Page  25
11
DEMO: EIGENE FORMATTER
Page  26
SECURITY
Page  35
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
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
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
15
META-DATEN VIA SWAGGER
Page  42
Swagger
JSON-basierte Metadatenformat für Web APIs
Weit verbreitet
Kein offizieller Standard
Folie 43
16
Swagger
Folie 44
JSON-Schema für Datentypen
Operationen (Verb, Url,
Datentypen für Anfrage und Antworten)
SWASHBUCKLE
Page  45
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
18
manfred.steyer@SOFTWAREarchitekt.at
SOFTWAREarchitekt.at
ManfredSteyer
Contact

Weitere ähnliche Inhalte

PDF
Was bringt Angular 2?
PDF
Web APIs mit ASP.NET Core 1
PDF
Moderne Web-Anwendungen mit Angular 2
PDF
Überblick zu Angular2 auf DevCon der Fox-Pro-Usergroup in Frankfurt, Nov 2015
PDF
Datenbasierte Services mit MVC Core 1 und EF Core 1
PDF
Datengetriebene Web APIs mit Entity Framework
PDF
Web APIs mit ASP.NET Core MVC 1
PDF
.NET Summit 2016 München: EcmaScript 2015+ with TypeScript
Was bringt Angular 2?
Web APIs mit ASP.NET Core 1
Moderne Web-Anwendungen mit Angular 2
Überblick zu Angular2 auf DevCon der Fox-Pro-Usergroup in Frankfurt, Nov 2015
Datenbasierte Services mit MVC Core 1 und EF Core 1
Datengetriebene Web APIs mit Entity Framework
Web APIs mit ASP.NET Core MVC 1
.NET Summit 2016 München: EcmaScript 2015+ with TypeScript

Ähnlich wie Web APIs mit ASP.NET MVC Core 1 (20)

PDF
Web APIs mit ASP.NET MVC Core 1
PDF
.NET Summit 2016 in München: ASP.NET Core 1
PDF
Migrationspfade für Angular 2
PDF
Der neue Component Router für Angular 2
PPS
Jax07 - Mixing Ajax Swing and Flash
PDF
Was ist neu in .NET 4.5?
PDF
Datenbasierte Services mit Entity Framework und Co.
PDF
Datengetriebene Web APIs mit Entity Framework
ODP
Präsentation webservices
PPT
Gwt Techtalk Präsentation
PDF
PHP-Module in statischen Seiten - Architektur-Ansätze
ODP
PPTX
Wie viel Client braucht das Web?JSF, Vaadin und AngularJS im Vergleich
PDF
Angular 2 Überblick Oktober 2015
PDF
Wieviel client braucht das web
PDF
GWT – Google Web Toolkit in der Praxis
PDF
Webbrowser-Automatisierung mit Python und Selenium WebDriver
PDF
Angular 2 Workshop November 2015 von der w-jax 2015
PDF
Angular 2 Workshop Oktober 2015
PDF
Web-GUIs mit Vaadin
Web APIs mit ASP.NET MVC Core 1
.NET Summit 2016 in München: ASP.NET Core 1
Migrationspfade für Angular 2
Der neue Component Router für Angular 2
Jax07 - Mixing Ajax Swing and Flash
Was ist neu in .NET 4.5?
Datenbasierte Services mit Entity Framework und Co.
Datengetriebene Web APIs mit Entity Framework
Präsentation webservices
Gwt Techtalk Präsentation
PHP-Module in statischen Seiten - Architektur-Ansätze
Wie viel Client braucht das Web?JSF, Vaadin und AngularJS im Vergleich
Angular 2 Überblick Oktober 2015
Wieviel client braucht das web
GWT – Google Web Toolkit in der Praxis
Webbrowser-Automatisierung mit Python und Selenium WebDriver
Angular 2 Workshop November 2015 von der w-jax 2015
Angular 2 Workshop Oktober 2015
Web-GUIs mit Vaadin
Anzeige

Mehr von Manfred Steyer (20)

PDF
Datenbindung und Performance in Angular 2
PDF
Single Page Applications neu gedacht: Redux in Angular 2 mit @ngrx/store
PDF
Offlinefähige Browseranwendungen: Progressive Web-Apps mit Angular 2
PDF
Angular 2: Die Ideen hinter Datenbindung und Formularen im Detail betrachtet
PDF
Angular 2 Upgrade: Migration von AngularJS 1.x zu 2.0
PDF
The newst new Router for Angular 2 ("Version 3")
PDF
Databinding and Performance-Tuning in Angular 2
PDF
Modern authentication solutions in Angular 2 with OAuth 2.0 and OpenId Connect
PDF
Progressive web apps with Angular 2
PDF
Der neueste neue Router (Version 3) für Angular 2
PDF
PDF
ASP.NET Core 1 for MVC- and WebAPI-Devs
PDF
EF Core 1: News features and changes
PDF
Angular 2: Migration - SSD 2016 London
PDF
Angular 2 - SSD 2016 London
PDF
ASP.NET Web API Deep Dive - SSD 2016 London
PDF
.NET Summit 2016 München: Angular 2 mit TypeScript
PDF
Wiederverwendbare Komponenten mit Angular 2.0 – Deep Dive
PDF
Angular 2: Routing
PDF
Moderne Web-Anwendungen mit Angular 2
Datenbindung und Performance in Angular 2
Single Page Applications neu gedacht: Redux in Angular 2 mit @ngrx/store
Offlinefähige Browseranwendungen: Progressive Web-Apps mit Angular 2
Angular 2: Die Ideen hinter Datenbindung und Formularen im Detail betrachtet
Angular 2 Upgrade: Migration von AngularJS 1.x zu 2.0
The newst new Router for Angular 2 ("Version 3")
Databinding and Performance-Tuning in Angular 2
Modern authentication solutions in Angular 2 with OAuth 2.0 and OpenId Connect
Progressive web apps with Angular 2
Der neueste neue Router (Version 3) für Angular 2
ASP.NET Core 1 for MVC- and WebAPI-Devs
EF Core 1: News features and changes
Angular 2: Migration - SSD 2016 London
Angular 2 - SSD 2016 London
ASP.NET Web API Deep Dive - SSD 2016 London
.NET Summit 2016 München: Angular 2 mit TypeScript
Wiederverwendbare Komponenten mit Angular 2.0 – Deep Dive
Angular 2: Routing
Moderne Web-Anwendungen mit Angular 2
Anzeige

Web APIs mit ASP.NET MVC Core 1

  • 1. 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
  • 2. 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
  • 3. 3 Inhalt Hosting Routing Http-Antworten beeinflussen Formatter konfigurieren Eigene Formatter Security (JWT) User Secrets Meta-Daten mit Swagger Proxy-Generierung Folie 5 (SELF-)HOSTING Page  6
  • 4. 4 Hosting Folie 7 Server Web-Framework Web-Application Middleware1 Middleware2 Middleware… Middlewaren 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(); […] } }
  • 6. 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
  • 7. 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) { […] } }
  • 8. 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) { […] } }
  • 10. 10 DEMO: HTTP-ANTWORT BEEINFLUSSEN Page  24 DEMO: FORMATTER KONFIGURIEREN Page  25
  • 11. 11 DEMO: EIGENE FORMATTER Page  26 SECURITY Page  35
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. 15 META-DATEN VIA SWAGGER Page  42 Swagger JSON-basierte Metadatenformat für Web APIs Weit verbreitet Kein offizieller Standard Folie 43
  • 16. 16 Swagger Folie 44 JSON-Schema für Datentypen Operationen (Verb, Url, Datentypen für Anfrage und Antworten) SWASHBUCKLE Page  45
  • 17. 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