ASP.NET Web API. Tomáš Herceg Microsoft MVP (ASP.NET)

Podobné dokumenty
Michal Augustýn Microsoft Most Valuable Professional

[ASP].NET Core Demystified. Miroslav Holec. Konzultant a lektor [ASP].NET Core.

Michal Augustýn ALWIL Software Microsoft Most Valuable Professional

Novinky v ASP.NET MVC6

Zápasíme s REST API. Lukáš Křečan REST API Architect GoodData

RESTful API TAMZ 1. Cvičení 11

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

WCF RIA Services. aneb jak na RIA aplikace v Silverlightu

Lukáš Kubis. MSP pro VŠB-TU Ostrava

WCF. IW5 - Programování v.net a C# WCF

KIV/PIA 2013 Jan Tichava

API pro volání služby kurzovního lístku KB

Webové služby. Martin Sochor

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

Web Services na SOAP

ISZR Referenční agent.net

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

IoC/DI. Tomáš Herceg Microsoft MVP (ASP.NET)

Instalace a konfigurace web serveru. WA1 Martin Klíma

Příručka pro potvrzování zůstatku vydavatelům karetních platebních prostředků

1 - Úvod do platformy.net. IW5 - Programování v.net a C#

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services

Michal Krátký, Miroslav Beneš

Platformy / technologie. Jaroslav Žáček jaroslav.zacek@osu.cz

Stručný obsah. Část I Úvod. Část II Komponenty

UJO Framework. revoluční architektura beans. verze

Zapouzdření. Tomáš Pitner, upravil Marek Šabo

ISZR Referenční agent.net

Platformy / technologie. Jaroslav Žáček

Tvorba informačních systémů

PLATFORMY / TECHNOLOGIE JAROSLAV ŽÁČEK

Code Contracts. Robert Haken [MVP ASP.NET, MCT] Software architect, Owner at HAVIT, s.r.o. knowledge-base.havit.cz

public static void main(string[] args) { System.out.println(new Main().getClass().getAnnotation(Greet.class).text());

Reaktivní programování v.net

RESTful API Design. HTTP protokol. Princip komunikace HATEOAS

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář

ESET & Flexibee. Igor Hák, hak@eset.cz

Úvod do Web Services

Java a XML. 10/26/09 1/7 Java a XML

KIV/PIA Semestrální práce

RMI Remote Method Invocation

Programátorské večery. Tomáš Herceg Microsoft Student Partner

WWW technologie. HTTP protokol

Ruby on Rails. Bc. Tomáš Juřík Bc. Bára Huňková

BI-AWD. Administrace Webového a Databázového serveru Virtualizace HTTP serveru

Setkání FlexiBee vývojářů. Jak jsme psali eshop

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 3.4.

Příloha č. 2 - Integrace SpiritÚAP do ESB Jihočeského kraje

Pokročilé Webové služby a Caché security. Š. Havlíček

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 26.3.

Distribuované systémy a výpočty

GUI. Systémová integrace pro desktopové aplikace

Historie, současnost a budoucnost ASP.NET

Funkční specifikace ABOKWS. Aplikační rozhraní elektronického bankovnictví ABO-K. Verze 0.5

Anotace a Hibernate. Aleš Nosek Ondřej Vadinský Daniel Krátký

PHP Best Practices. Please try to fit your code to 80 columns. That's decimal 80. A. Morton

Úvod. Petr Aubrecht (CA) Martin Ptáček (Wincor Nixdorf) Je 10 typů lidí: ti, kteří znají binární kód, a ti, kteří ne.

Použití databází na Webu

HTTP protokol. Zpracoval : Petr Novotný

Vývoj Internetových Aplikací

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

SUTOL Symposium 2014

Microsoft ASP.NET 2.0/3.0 (advanced)

Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15

Návod na XML synchronizaci dat meteostanice WARIO ME z portálu

Téma 5. Ovladače přístrojů Instrument Drivers (ID)

Kapitola 5 WCF, webové služby a mezidoménové zásady

8 Třídy, objekty, metody, předávání argumentů metod

Hypertext Transfer Protocol (HTTP/1.1 RFC 2616) Počítačové sítě Pavel Šinták

Komponentově orientované webové frameworky. Jiří Stránský twitter.com/jistr

Možnosti využití protokolu OData v aplikační platformě.net. Bc. Milan Gatyás

Proč Angular JS framework?

Služby WCF JIHOČESKÁ UNIVERZITA V ČESKÝCH BUDĚJOVICÍCH. Pedagogická fakulta. Bakalářská práce. Boris Eninger. Katedra informatiky

Tabulka Nabídková cena za předmět plnění *uchazeč vyplní cenu za celý kurz nebo cenu za 1 účastníka dle zadávací dokumentace a nabídky uchazeče

Zabezpečení platformy SOA. Michal Opatřil Corinex Group

Použití inteligentních značek s informačními službami

Úvod do FlexiBee REST API. Petr Ferschmann FlexiBee Systems s.r.o.

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

Softwarové komponenty a Internet

Nastavení propojení s eshopem

IBM Domino a Apache Solr

Vedoucí práce: Ing. Martin Balík

Webové služby pro. CenovaMapa.cz

Technická příručka aplikace. Popis API internetového bankovnictví

Dokumentace k API SSLmarketu. verze 1.3

Diagnostika webových aplikací v Azure

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

Popis B2B rozhraní pro elektronickou neschopenku

2N Helios IP HTTP API

Ukládání a vyhledávání XML dat

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

<Insert Picture Here> Vývoj portálových řešení v Javě

Rozhraní SAX, SAX vs. SAX2. Jaroslav Ciml

Geis Point SOAP WebServices Interface

sms-sluzba.cz API_XML30 - textové SMS do ČR a do zahraničí

Server-side technologie pro webové aplikace

Vhodnost nasazení jednotlivých webových architektur, sdílení dat, perzistence, webové služby a REST, asynchronnost, messaging

Design Patterns. Tomáš Herceg Microsoft MVP (ASP.NET)

Transkript:

ASP.NET Web API Tomáš Herceg Microsoft MVP (ASP.NET) www.dotnetcollege.cz

Yet Another WCF?.NET Web Services (SOAP, WSDL) Fungují vždy a všude, nedá se nic zkazit Windows Communication Foundation Pokročilé možnosti konfigurace (až moc možností) Lze přinutit komunikovat i pomocí JSONu nebo XML webhttpbinding Příliš obecné, málokdo umí, configuration hell!#grr! ASP.NET Web API Jednoduchá a jednoúčelová technologie OWIN

Co to umí? Technologie pro REST služby URL routing Podpora JSON, OData a dalších formátů Generování dokumentace (Help Pages) Rozšiřitelnost Pokročilé možnosti hostování

Základy Controller třída dědící z ApiController Action metoda uvnitř controlleru HTTP metoda Pomocí názvu GetProducts (GET), DeleteProduct (DELETE) Nebo atributem [HttpGet], [HttpPost] Parametry metody Primitivní dat. typy int, bool, string, Guid atd. Defaultně z URL Komplexní typy z těla požadavku Možno řídit atributy FromUri a FromBody Lze dát vždy jen jednomu z parametrů Návratová hodnota Void => 204 No Content Objekt => 200 Redirect

Konzumace Web API Buď klasický WebClient Nebo třída HttpClient NuGet balíček ASP.NET Web Api Client Libs client.defaultrequestheaders.accept.add( new MediaTypeWithQualityHeaderValue("application/json")); GetAsync, PostAsync response.content.readasasync

Užitečné tipy Vyhazování výjimek throw new HttpResponseException(HttpStatusCode.NotFound); Využívat HTTP kódy 400 Bad Request 402 Payment Required 403 Forbidden 404 Not Found 409 Conflict 418 I'm a teapot Redirect Např. po přidání záznamu redirectnout na jeho detail var uri = Url.Link("DefaultApi", new { id = item.id }); response.headers.location = new Uri(uri); return response;

Routing Výchozí konfigurace routes.maphttproute( name: "API Default", routetemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional }); ProductsController => api/products Parametr {action} název metody v Controlleru Možnost customizace pomocí [ActionName(" ")] Atribut [NonAction] Atributy [HttpGet], [HttpPost],, [AcceptVerbs]

Různé routy pro různé controllery routes.maphttproute( name: "ApiRoot", routetemplate: "api/root/{id}", defaults: new { controller = "products", id = RouteParameter.Optional } ); routes.maphttproute( name: "DefaultApi", routetemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } );

ASP.NET Web API 2.0 Attribute Routes Routy přímo nad action metodami Není nutná složitá globální konfigurace Ale lze kombinovat [Route("customers/{customerId}/orders")] Volitelné parametry RouteName a RouteOrder Při startu volat httpconfiguration.maphttpattributeroutes() Atribut [RoutePrefix(" ")] nad controllerem

Route Constraints [Route("users/{id:int:min(1)}"] alpha length(5, 20) bool long datetime max(10) decimal maxlength(10) double min(1) float minlength(10) guid range int regex Vlastní constrainty IHttpRouteConstraint Volitelné parametry {id?}

Help Pages NuGet balík Microsoft.AspNet.WebApi.HelpPage V Global.asax zavolat AreaRegistration.RegisterAllAreas(); config.setdocumentationprovider( ); Vlastnosti projektu / Build / XML Doc File Na adrese /Help pak visí dokumentace Možnost vyloučení akcí nebo controllerů [ApiExplorerSettings(IgnoreApi=true)]

Exception Handling Exception filtry Třída dědící z ExceptionFilterAttribute Možno aplikovat na controller nebo na akci Jako atribut Nebo globálně GlobalConfiguration.Configuration.Filters.Add( ) Podpora Model Validation Jako v MVC ModelState Vlastní chyby Request.CreateErrorResponse()

Model State Dostupný v každé Web API metodě Standardní validační atributy System.ComponentModel.DataAnnotations Required, Range, RegularExpression 2 možnosti V každé funkci kontrolovat if (!ModelState.IsValid) Vlastní ActionFilter Nebude provádět danou funkci a vrátí HTTP kód 400 Vrátí validační chyby jako JSON Použití stejné jako u exception filtrů

Response Handlers Možnost manipulace se zpracovávaným požadavkem Třída DelegatingHandler Registrace pomocí config.messagehandlers.add( ) Využití Kontrola API key Přidávání HTTP hlaviček pro všechny requesty Logging, tracing atd. http://www.asp.net/web-api/overview/working-with-http/http-message-handlers

Vlastní zpracování požadavku Vhodné např. pro upload souborů async Task<HttpResponseMessage> Třída MultipartFormDataStreamProvider Request.Content.ReadAsMultipartAsync Request.Content.IsMultipartContent

Autorizace Atribut Authorize Volitelné parametry Users a Roles Autentizace spolupracuje s ASP.NET Forms, Windows, Individual Accounts

OData OData Hodí se pro relační data Snadné filtrování, řazení, relace (dotaz se specifikuje v query stringu) Např. http://odatatest.com/customers?$filter=id+eq+1 Poměrně široká podpora Samply ukazují integraci s Entity Frameworkem Ale lze i bez něj Funkce, která vrací IQueryable Atribut [Queryable(AllowedQueryOptions=AllowedQueryOptions.All)] Bude samostatná přednáška

OWIN System.Web Obrovské závislosti na COMu Pomalý startup aplikace, velká paměťová náročnost Celé WebForms jsou v paměti, i když používáte MVC Více než 10 let stará OWIN Open Web Interface for.net Definice toho, jak má vypadat webový server Jednoduchost Modularita a rozšiřitelnost

OWIN a Katana Jak provozovat OWIN aplikaci Self hosting Owin Host for System.Web možné na IISce Katana Implementace frameworků nad OWINem Zatím SignalR a ASP.NET Web API Připravují i MVC WebForms nebudou

Self hosting Web API Nainstalovat balíček Microsoft.AspNet.WebApi.OwinSelfHost V OWIN Startup class nastavit var config = new HttpConfiguration(); config.routes.maphttproute appbuilder.usewebapi(config) using (WebApp.Start<Startup>(url)) Nastartuje OWIN host s danou Startup třídou