SlideShare ist ein Scribd-Unternehmen logo
1 von 10
Downloaden Sie, um offline zu lesen
1
Web APIs mit ASP.NET MVC Core 1
Manfred Steyer
twitter.com/ManfredSteyer
ManfredSteyer
ROUTING UND WEB APIS
Page  2
2
Was ist Routing?
Url  Action-Methode
Folie 3
Web APIs in MVC Core 1
Kein eigenes Routing für Web APIs
Selbe Konzept, wie für MVC-Anwendungen
Routing berücksichtigt keine URL-Parameter
Folie 5
3
Standard-Route in MVC
Folie 6
// Startup.cs
app.UseMvc(routes =>
{
routes.MapRoute(
name:"default",
template:"{controller=Home}/{action=Index}/{id?}");
});
Nutzung der Standard-Route
Folie 7
public class FlugController: Controller
{
public Flug GetById(int id) { […] }
public List<Flug> GetByRoute(string von, string nach) { […] }
public List<Flug> GetByDate(DateTime datum) { […] }
public void PostFlug([FromBody] Flug flug) { […] }
}
4
Nutzung der Standard-Route
Folie 8
public class FlugController: Controller
{
// GET|PUT|POST|… Flug/GetById/{id}
public Flug GetById(int id) { […] }
public List<Flug> GetByRoute(string von, string nach) { […] }
public List<Flug> GetByDate(DateTime datum) { […] }
public void PostFlug([FromBody] Flug flug) { […] }
}
Nutzung der Standard-Route
Folie 9
public class FlugController: Controller
{
// GET|PUT|POST|… Flug/GetById/{id}
public Flug GetById(int id) { […] }
// GET|PUT|POST|… Flug/GetByRoute?von=…&nach=…
public List<Flug> GetByRoute(string von, string nach) { […] }
// GET|PUT|POST|… Flug/GetByDate?datum=…
public List<Flug> GetByDate(DateTime datum) { […] }
// GET|PUT|POST|… Flug/PostFlug
public void PostFlug([FromBody] Flug flug) { […] }
}
5
Web API mit Attribut-basierten Routen
Folie 10
[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 11
[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) { […] }
}
6
Web API mit Attribut-basierten Routen
Folie 12
[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 13
[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) { […] }
}
7
Migration?
Microsoft.AspNet.Mvc.WebApiCompatShim
Folie 14
DEMO: ERSTE SCHRITTE
Page  15
8
DEMO: HTTP-ANTWORT
BEEINFLUSSEN
Page  16
DEMO: (XML-)FORMATTER
KONFIGURIEREN
Page  17
9
(SELF-)HOSTING
Page  18
Hosting
Folie 19
Server
Web-Framework
Web-Application
Middleware1
Middleware2
Middleware…
Middlewaren
Anfrage
Antwort
Host-Prozess
HTTP
10
Fazit
Neuimplementierung ohne Mehrgleisigkeiten
Leichtgewichtig, plattformübergreifend
Self-Hosting
High-Level-APIs: Vertraut
Low-Level-APIs: Komplett überarbeitet
Automatische Migration nicht möglich
Folie 40
manfred.steyer@SOFTWAREarchitekt.at
SOFTWAREarchitekt.at
ManfredSteyer
Contact

Weitere ähnliche Inhalte

Andere mochten auch

Aloft Ahmedabad awards & recognition
Aloft Ahmedabad awards & recognitionAloft Ahmedabad awards & recognition
Aloft Ahmedabad awards & recognitionNaveen kaul
 
Radi de mort. Matança de coloms i guatlles per diversió.
Radi de mort.  Matança de  coloms  i guatlles per diversió.Radi de mort.  Matança de  coloms  i guatlles per diversió.
Radi de mort. Matança de coloms i guatlles per diversió.Jesús Frare Garcia
 
Երևան
ԵրևանԵրևան
ԵրևանLusiAnn1
 
Risk assessment
Risk assessmentRisk assessment
Risk assessmentNiadalton
 
Lyric Analysis
Lyric AnalysisLyric Analysis
Lyric Analysissylvieapps
 
Soborul Sfinților Arhangheli Mihail și Gavriil şi al tuturor cereştilor puter...
Soborul Sfinților Arhangheli Mihail și Gavriil şi al tuturor cereştilor puter...Soborul Sfinților Arhangheli Mihail și Gavriil şi al tuturor cereştilor puter...
Soborul Sfinților Arhangheli Mihail și Gavriil şi al tuturor cereştilor puter...Ioan M.
 
Facility management in Sports
Facility management in SportsFacility management in Sports
Facility management in SportsUsman Khan
 

Andere mochten auch (10)

Aloft Ahmedabad awards & recognition
Aloft Ahmedabad awards & recognitionAloft Ahmedabad awards & recognition
Aloft Ahmedabad awards & recognition
 
Radi de mort. Matança de coloms i guatlles per diversió.
Radi de mort.  Matança de  coloms  i guatlles per diversió.Radi de mort.  Matança de  coloms  i guatlles per diversió.
Radi de mort. Matança de coloms i guatlles per diversió.
 
ramanathsa_updated
ramanathsa_updatedramanathsa_updated
ramanathsa_updated
 
Assessor
AssessorAssessor
Assessor
 
Երևան
ԵրևանԵրևան
Երևան
 
Risk assessment
Risk assessmentRisk assessment
Risk assessment
 
Lyric Analysis
Lyric AnalysisLyric Analysis
Lyric Analysis
 
Soborul Sfinților Arhangheli Mihail și Gavriil şi al tuturor cereştilor puter...
Soborul Sfinților Arhangheli Mihail și Gavriil şi al tuturor cereştilor puter...Soborul Sfinților Arhangheli Mihail și Gavriil şi al tuturor cereştilor puter...
Soborul Sfinților Arhangheli Mihail și Gavriil şi al tuturor cereştilor puter...
 
Facility management in Sports
Facility management in SportsFacility management in Sports
Facility management in Sports
 
Public Library Design
Public Library DesignPublic Library Design
Public Library Design
 

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

Der neue Component Router für Angular 2
Der neue Component Router für Angular 2Der neue Component Router für Angular 2
Der neue Component Router für Angular 2Manfred Steyer
 
Migrationspfade für Angular 2
Migrationspfade für Angular 2Migrationspfade für Angular 2
Migrationspfade für Angular 2Manfred Steyer
 
Überblick zu Angular2 auf DevCon der Fox-Pro-Usergroup in Frankfurt, Nov 2015
Überblick zu Angular2 auf DevCon der Fox-Pro-Usergroup in Frankfurt, Nov 2015Überblick zu Angular2 auf DevCon der Fox-Pro-Usergroup in Frankfurt, Nov 2015
Überblick zu Angular2 auf DevCon der Fox-Pro-Usergroup in Frankfurt, Nov 2015Manfred Steyer
 
.NET Summit 2016 München: EcmaScript 2015+ with TypeScript
.NET Summit 2016 München: EcmaScript 2015+ with TypeScript.NET Summit 2016 München: EcmaScript 2015+ with TypeScript
.NET Summit 2016 München: EcmaScript 2015+ with TypeScriptManfred Steyer
 
Angular 2 Überblick Oktober 2015
Angular 2 Überblick Oktober 2015Angular 2 Überblick Oktober 2015
Angular 2 Überblick Oktober 2015Manfred Steyer
 
Modern angular 02_angular_mit_type_script
Modern angular 02_angular_mit_type_scriptModern angular 02_angular_mit_type_script
Modern angular 02_angular_mit_type_scriptManfred Steyer
 
Datenbindung und Performance in Angular 2
Datenbindung und Performance in Angular 2Datenbindung und Performance in Angular 2
Datenbindung und Performance in Angular 2Manfred Steyer
 
Seminar Joomla 1.5 SEF-Mechanismus
Seminar Joomla 1.5 SEF-MechanismusSeminar Joomla 1.5 SEF-Mechanismus
Seminar Joomla 1.5 SEF-MechanismusFabian Becker
 
Präsentation webservices
Präsentation webservicesPräsentation webservices
Präsentation webservicesxxtesaxx
 
Angular 2 Workshop November 2015 von der w-jax 2015
Angular 2 Workshop November 2015 von der w-jax 2015Angular 2 Workshop November 2015 von der w-jax 2015
Angular 2 Workshop November 2015 von der w-jax 2015Manfred Steyer
 
Angular 2 Workshop Oktober 2015
Angular 2 Workshop Oktober 2015Angular 2 Workshop Oktober 2015
Angular 2 Workshop Oktober 2015Manfred Steyer
 
Webbrowser-Automatisierung mit Python und Selenium WebDriver
Webbrowser-Automatisierung mit Python und Selenium WebDriverWebbrowser-Automatisierung mit Python und Selenium WebDriver
Webbrowser-Automatisierung mit Python und Selenium WebDriverAndi Albrecht
 
Datenbasierte Services mit Entity Framework und Co.
Datenbasierte Services mit Entity Framework und Co.	Datenbasierte Services mit Entity Framework und Co.
Datenbasierte Services mit Entity Framework und Co. Manfred Steyer
 
Datengetriebene Web APIs mit Entity Framework
Datengetriebene Web APIs mit Entity FrameworkDatengetriebene Web APIs mit Entity Framework
Datengetriebene Web APIs mit Entity FrameworkManfred Steyer
 
.NET Summit 2016 in München: ASP.NET Core 1
.NET Summit 2016 in München: ASP.NET Core 1.NET Summit 2016 in München: ASP.NET Core 1
.NET Summit 2016 in München: ASP.NET Core 1Manfred Steyer
 
Moderne Web-Anwendungen mit Angular 2
Moderne Web-Anwendungen mit Angular 2Moderne Web-Anwendungen mit Angular 2
Moderne Web-Anwendungen mit Angular 2Manfred Steyer
 
Moderne Web-Anwendungen mit Angular 2
Moderne Web-Anwendungen mit Angular 2Moderne Web-Anwendungen mit Angular 2
Moderne Web-Anwendungen mit Angular 2Manfred Steyer
 
Wieviel client braucht das web
Wieviel client braucht das webWieviel client braucht das web
Wieviel client braucht das webgedoplan
 

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

Der neue Component Router für Angular 2
Der neue Component Router für Angular 2Der neue Component Router für Angular 2
Der neue Component Router für Angular 2
 
Migrationspfade für Angular 2
Migrationspfade für Angular 2Migrationspfade für Angular 2
Migrationspfade für Angular 2
 
Überblick zu Angular2 auf DevCon der Fox-Pro-Usergroup in Frankfurt, Nov 2015
Überblick zu Angular2 auf DevCon der Fox-Pro-Usergroup in Frankfurt, Nov 2015Überblick zu Angular2 auf DevCon der Fox-Pro-Usergroup in Frankfurt, Nov 2015
Überblick zu Angular2 auf DevCon der Fox-Pro-Usergroup in Frankfurt, Nov 2015
 
.NET Summit 2016 München: EcmaScript 2015+ with TypeScript
.NET Summit 2016 München: EcmaScript 2015+ with TypeScript.NET Summit 2016 München: EcmaScript 2015+ with TypeScript
.NET Summit 2016 München: EcmaScript 2015+ with TypeScript
 
Angular 2 Überblick Oktober 2015
Angular 2 Überblick Oktober 2015Angular 2 Überblick Oktober 2015
Angular 2 Überblick Oktober 2015
 
Modern angular 02_angular_mit_type_script
Modern angular 02_angular_mit_type_scriptModern angular 02_angular_mit_type_script
Modern angular 02_angular_mit_type_script
 
Datenbindung und Performance in Angular 2
Datenbindung und Performance in Angular 2Datenbindung und Performance in Angular 2
Datenbindung und Performance in Angular 2
 
Seminar Joomla 1.5 SEF-Mechanismus
Seminar Joomla 1.5 SEF-MechanismusSeminar Joomla 1.5 SEF-Mechanismus
Seminar Joomla 1.5 SEF-Mechanismus
 
Präsentation webservices
Präsentation webservicesPräsentation webservices
Präsentation webservices
 
Angular 2 Workshop November 2015 von der w-jax 2015
Angular 2 Workshop November 2015 von der w-jax 2015Angular 2 Workshop November 2015 von der w-jax 2015
Angular 2 Workshop November 2015 von der w-jax 2015
 
Angular 2 Workshop Oktober 2015
Angular 2 Workshop Oktober 2015Angular 2 Workshop Oktober 2015
Angular 2 Workshop Oktober 2015
 
Webbrowser-Automatisierung mit Python und Selenium WebDriver
Webbrowser-Automatisierung mit Python und Selenium WebDriverWebbrowser-Automatisierung mit Python und Selenium WebDriver
Webbrowser-Automatisierung mit Python und Selenium WebDriver
 
Datenbasierte Services mit Entity Framework und Co.
Datenbasierte Services mit Entity Framework und Co.	Datenbasierte Services mit Entity Framework und Co.
Datenbasierte Services mit Entity Framework und Co.
 
Datengetriebene Web APIs mit Entity Framework
Datengetriebene Web APIs mit Entity FrameworkDatengetriebene Web APIs mit Entity Framework
Datengetriebene Web APIs mit Entity Framework
 
.NET Summit 2016 in München: ASP.NET Core 1
.NET Summit 2016 in München: ASP.NET Core 1.NET Summit 2016 in München: ASP.NET Core 1
.NET Summit 2016 in München: ASP.NET Core 1
 
Moderne Web-Anwendungen mit Angular 2
Moderne Web-Anwendungen mit Angular 2Moderne Web-Anwendungen mit Angular 2
Moderne Web-Anwendungen mit Angular 2
 
Moderne Web-Anwendungen mit Angular 2
Moderne Web-Anwendungen mit Angular 2Moderne Web-Anwendungen mit Angular 2
Moderne Web-Anwendungen mit Angular 2
 
Wieviel client braucht das web
Wieviel client braucht das webWieviel client braucht das web
Wieviel client braucht das web
 

Mehr von Manfred Steyer

Single Page Applications neu gedacht: Redux in Angular 2 mit @ngrx/store
Single Page Applications neu gedacht: Redux in Angular 2 mit @ngrx/storeSingle Page Applications neu gedacht: Redux in Angular 2 mit @ngrx/store
Single Page Applications neu gedacht: Redux in Angular 2 mit @ngrx/storeManfred Steyer
 
Offlinefähige Browseranwendungen: Progressive Web-Apps mit Angular 2
Offlinefähige Browseranwendungen: Progressive Web-Apps mit Angular 2Offlinefähige Browseranwendungen: Progressive Web-Apps mit Angular 2
Offlinefähige Browseranwendungen: Progressive Web-Apps mit Angular 2Manfred Steyer
 
Angular 2: Die Ideen hinter Datenbindung und Formularen im Detail betrachtet
Angular 2: Die Ideen hinter Datenbindung und Formularen im Detail betrachtetAngular 2: Die Ideen hinter Datenbindung und Formularen im Detail betrachtet
Angular 2: Die Ideen hinter Datenbindung und Formularen im Detail betrachtetManfred Steyer
 
Angular 2 Upgrade: Migration von AngularJS 1.x zu 2.0
Angular 2 Upgrade: Migration von AngularJS 1.x zu 2.0Angular 2 Upgrade: Migration von AngularJS 1.x zu 2.0
Angular 2 Upgrade: Migration von AngularJS 1.x zu 2.0Manfred Steyer
 
The newst new Router for Angular 2 ("Version 3")
The newst new Router for Angular 2 ("Version 3")The newst new Router for Angular 2 ("Version 3")
The newst new Router for Angular 2 ("Version 3")Manfred Steyer
 
Databinding and Performance-Tuning in Angular 2
Databinding and Performance-Tuning in Angular 2Databinding and Performance-Tuning in Angular 2
Databinding and Performance-Tuning in Angular 2Manfred Steyer
 
Modern authentication solutions in Angular 2 with OAuth 2.0 and OpenId Connect
Modern authentication solutions in Angular 2 with OAuth 2.0 and OpenId ConnectModern authentication solutions in Angular 2 with OAuth 2.0 and OpenId Connect
Modern authentication solutions in Angular 2 with OAuth 2.0 and OpenId ConnectManfred Steyer
 
Progressive web apps with Angular 2
Progressive web apps with Angular 2Progressive web apps with Angular 2
Progressive web apps with Angular 2Manfred Steyer
 
Der neueste neue Router (Version 3) für Angular 2
Der neueste neue Router (Version 3) für Angular 2Der neueste neue Router (Version 3) für Angular 2
Der neueste neue Router (Version 3) für Angular 2Manfred Steyer
 
ASP.NET Core 1 for MVC- and WebAPI-Devs
ASP.NET Core 1 for MVC- and WebAPI-DevsASP.NET Core 1 for MVC- and WebAPI-Devs
ASP.NET Core 1 for MVC- and WebAPI-DevsManfred Steyer
 
EF Core 1: News features and changes
EF Core 1: News features and changesEF Core 1: News features and changes
EF Core 1: News features and changesManfred Steyer
 
Angular 2: Migration - SSD 2016 London
Angular 2: Migration - SSD 2016 LondonAngular 2: Migration - SSD 2016 London
Angular 2: Migration - SSD 2016 LondonManfred Steyer
 
Angular 2 - SSD 2016 London
Angular 2 - SSD 2016 LondonAngular 2 - SSD 2016 London
Angular 2 - SSD 2016 LondonManfred Steyer
 
ASP.NET Web API Deep Dive - SSD 2016 London
ASP.NET Web API Deep Dive - SSD 2016 LondonASP.NET Web API Deep Dive - SSD 2016 London
ASP.NET Web API Deep Dive - SSD 2016 LondonManfred Steyer
 
.NET Summit 2016 München: Angular 2 mit TypeScript
.NET Summit 2016 München: Angular 2 mit TypeScript.NET Summit 2016 München: Angular 2 mit TypeScript
.NET Summit 2016 München: Angular 2 mit TypeScriptManfred Steyer
 
Wiederverwendbare Komponenten mit Angular 2.0 – Deep Dive
Wiederverwendbare Komponenten mit Angular 2.0 – Deep DiveWiederverwendbare Komponenten mit Angular 2.0 – Deep Dive
Wiederverwendbare Komponenten mit Angular 2.0 – Deep DiveManfred Steyer
 
Datenbasierte Services mit Entity Framework und Co.
Datenbasierte Services mit Entity Framework und Co.	Datenbasierte Services mit Entity Framework und Co.
Datenbasierte Services mit Entity Framework und Co. Manfred Steyer
 
Komponenten mit Angular 2, Deep Dive
Komponenten mit Angular 2, Deep DiveKomponenten mit Angular 2, Deep Dive
Komponenten mit Angular 2, Deep DiveManfred Steyer
 

Mehr von Manfred Steyer (20)

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

Web APIs mit ASP.NET MVC Core 1

  • 1. 1 Web APIs mit ASP.NET MVC Core 1 Manfred Steyer twitter.com/ManfredSteyer ManfredSteyer ROUTING UND WEB APIS Page  2
  • 2. 2 Was ist Routing? Url  Action-Methode Folie 3 Web APIs in MVC Core 1 Kein eigenes Routing für Web APIs Selbe Konzept, wie für MVC-Anwendungen Routing berücksichtigt keine URL-Parameter Folie 5
  • 3. 3 Standard-Route in MVC Folie 6 // Startup.cs app.UseMvc(routes => { routes.MapRoute( name:"default", template:"{controller=Home}/{action=Index}/{id?}"); }); Nutzung der Standard-Route Folie 7 public class FlugController: Controller { public Flug GetById(int id) { […] } public List<Flug> GetByRoute(string von, string nach) { […] } public List<Flug> GetByDate(DateTime datum) { […] } public void PostFlug([FromBody] Flug flug) { […] } }
  • 4. 4 Nutzung der Standard-Route Folie 8 public class FlugController: Controller { // GET|PUT|POST|… Flug/GetById/{id} public Flug GetById(int id) { […] } public List<Flug> GetByRoute(string von, string nach) { […] } public List<Flug> GetByDate(DateTime datum) { […] } public void PostFlug([FromBody] Flug flug) { […] } } Nutzung der Standard-Route Folie 9 public class FlugController: Controller { // GET|PUT|POST|… Flug/GetById/{id} public Flug GetById(int id) { […] } // GET|PUT|POST|… Flug/GetByRoute?von=…&nach=… public List<Flug> GetByRoute(string von, string nach) { […] } // GET|PUT|POST|… Flug/GetByDate?datum=… public List<Flug> GetByDate(DateTime datum) { […] } // GET|PUT|POST|… Flug/PostFlug public void PostFlug([FromBody] Flug flug) { […] } }
  • 5. 5 Web API mit Attribut-basierten Routen Folie 10 [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 11 [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) { […] } }
  • 6. 6 Web API mit Attribut-basierten Routen Folie 12 [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 13 [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) { […] } }
  • 8. 8 DEMO: HTTP-ANTWORT BEEINFLUSSEN Page  16 DEMO: (XML-)FORMATTER KONFIGURIEREN Page  17
  • 9. 9 (SELF-)HOSTING Page  18 Hosting Folie 19 Server Web-Framework Web-Application Middleware1 Middleware2 Middleware… Middlewaren Anfrage Antwort Host-Prozess HTTP
  • 10. 10 Fazit Neuimplementierung ohne Mehrgleisigkeiten Leichtgewichtig, plattformübergreifend Self-Hosting High-Level-APIs: Vertraut Low-Level-APIs: Komplett überarbeitet Automatische Migration nicht möglich Folie 40 manfred.steyer@SOFTWAREarchitekt.at SOFTWAREarchitekt.at ManfredSteyer Contact