Webbtjänster med API er

Relevanta dokument
Webbtjänster med API er

Webbtjänster med API er

Webbtjänster med API er

Webbtjänster med API er

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.

Webbteknik II. Föreläsning 5. Restless farewell. John Häggerud, 2011

1ME323 Webbteknik 3 Lektion 6 API. Rune Körnefors. Medieteknik Rune Körnefors

Swedbank Mobile Loadtesting. LoadRunner Mobile App protocol

Webbteknik II. Föreläsning 4. Watching the river flow. John Häggerud, 2011

Services + REST och OAuth

KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09

Laboration 2 RESTful webb-api

DB, DATA, LOGIC, EXPOSURE (WEB)

JavaScript in SharePoint and not just for Apps. Wictor Wilén

Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1.

SAS USER FORUM SWEDEN 2017 USER FORUM. SAS Viya och öppenhet en gemomgång av LUA-, Java-, Python- och REST-gränssnitten mot SAS Viya

Leverans-API för nedladdning av geodata v1.0 - teknisk beskrivning

Tentamen Nätverksprogrammering Lösningsförslag

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Tjänstegränssnitt API Vägledning

Introduktion till integrering av Schenkers e-tjänster. Version 2.0

Objektsamlingar i Java

DAT043 - föreläsning 8

RDT Externt Webbtjänst Gränssnitt

E-legitimationsnämndens legitimeringstjänster för test

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Arkitektur. Den Röda Tråden

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

GATEWAY TJÄNSTEBESKRIVNING. Webbservice. WSDL-fil. Skicka meddelanden. SMS och FastnätsSMS

ADO.NET Murach Kapitel 17-20

Server-kod. TDDD80 Mobila och sociala applikationer

Tjänstegränssnitt Api Platsannons

Java, klasser, objekt (Skansholm: Kapitel 2)

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

Alla rättigheter till materialet reserverade Easec

Kärnfunktionalitet. Middleware. Samverkande system. Service Oriented Architecture. Kommunikationsmekanismer. Tjänsteorienterade arkitekturer

Vitec Connect. Teknisk beskrivning REVIDERAT SENAST: VITEC. VITEC Affärsområde Mäklare

RDT Externt Webbtjänst Gränssnitt

Uppgiftskravstjänsten Teknisk anslutning för att hämta uppgiftskrav som öppna data. Version 1.0

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query).

Tjänstegränssnitt Api Platsannons

Ajax TruClient. Erfarenheter, tips och trix från Swedbank IT. Christian Gerdes Performance Engineer, LIGHTS IN LINE AB

Labora&on 2 Funk&oner, if och loop övningar/uppgi:er

Imperativ programmering. Föreläsning 2

Tentamen Nätverksprogrammering Lösningsförslag

Mål med lektionen! Repetera och befästa kunskaperna.

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

PHP - Fortsättning. PHP och MySQL

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander

TDDC77 Objektorienterad Programmering

Systemutvecklare SU14, Malmö

MVC med Javascript och Ajax. Filip Ekberg

Asp.net mvc intro PER KVARNBRINK,

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Detta dokument är ett exempel, cirka hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling

Tentamen Nätverksprogrammering Lösningsförslag

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

C++ Slumptalsfunktioner + switch-satsen

ID1004 Laboration 4, November 2012

Programutvecklingsprojekt Projektgrupp Elvin. Detailed Design Document

Programbeskrivning. Chaos på Web. Version

E12 "Evil is going on"

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Föreläsning 5-6 Innehåll

1ME323 Webbteknik 3 Lek0on 6 API. Rune Körnefors. Medieteknik Rune Körnefors rune.kornefors@lnu.se

Föreläsning 4 Innehåll

XML-produkter. -Registret över verkliga huvudmän (RVH) Teknisk handledning för webbtjänst mot RVH (Web Services) Datum: Version: 1.

Avancerade Webbteknologier

Polymorfi. Objektorienterad och komponentbaserad programmering

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

Uniform Resource Locator (URL) JavaServer Pages - JSP. Webbklienter. Webbserver. Hypertext Transfer Protocol (HTTP) HTTP Request

API Notera HTTPS POST msg UTF-8. API_key JSON Mobilnummer format 1. Skicka ett SMS till specifikt nummer POST parametrar: from msg API_key Exempel:

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

F4. programmeringsteknik och Matlab

Alla rättigheter till materialet reserverade Easec

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Att skriva till och läsa från terminalfönstret

JAVASCRIPT. Beteende

Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass

Lab 6: ASP.NET 2.0 Providermodellen

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Öppna APIer - för att få allt det där gjort du annars inte hinner

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Webbteknik. Innehåll. Historisk återblick Teknisk beskrivning Märkspråk Standardisering Trender. En kort introduktion

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

Utveckling av tjänster

Dagens föreläsning Programmering i Lisp. - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning

Chapter 4: Writing Classes/ Att skriva egna klasser.

Kopiering av objekt i Java

OOP Objekt-orienterad programmering

Transkript:

Webbtjänster med API er

Mål med lektionen! En lite djupare inblick i RESTfulla tjänster

Vad lektionen omfattar RESTful Services

Överblick SOAP kan vara lite overkill för vissa specifika web service scenarion. SOAP utan WS-* protokollen, Simple SOAP. XML meddelanden (POX)

REST R.Fielding Skrev en avhandling som beskrev en skalbar arkitekturför att bygga tjänster runt ett enhetligt interface. Vilket han egentligen beskrev, var en arkitektonisk beskrivning för hur webben egentligen fungerar idag, och på grund av detta så är HTTP det protokoll som folk använder idag för att bygga RESTfulla implementationer.

REST är fundamentalt olika ifrån SOAP SOAP definierar en transport-neutral modell, fokuserat på definiera customiserade tjänste-kontrakt med customiserade operationer och du kan anropa dessa operationer över en mängd olika transporter genom att använda olika sätt att koda för meddelanden. REST å andra sidan definierar mer en transport specifik modell. REST binder dig inte till HTTP, men i realitet, HTTP är det enda protokollet som praktiskt används idag för att bygga RESTfulla arkitekturer. Så dessa två går hand i hand.

Förstå REST Definiera resurser med unikt id eller URI Enhetliga service kontrakt GET, PUT, POST, DELETE och HEAD HTML, XML, RSS eller JSON

Vad SOAP betonar SOAP har betoningen på verb eller handlingar/händelser, medans REST har betoningen på adjektiv eller resurser. När du definierar en SOAP tjänst så är ditt fokus på att definiera service kontraktet och uppsättningen med service operationer som vi skall exponera genom tjänsten.

REST vs SOAP SOAP REST

Fördelar med HTTP verb ROA (Resurs-orienterad arkitektur) fokuserar på identifiera och namnge resurserna. Hur man navigerar mellan dessa resurser med länkar eller HREF s. HTTP verb med fördelar. Ett utbrett samarbete mellan system/tjänster. Skalbarheten

Vikten av GET metoden Ca 90% av dagens webb trafik använder GET. Idempotenta GET requests. POST PUT och DELETE, ger inte samma garantier som GET gör. REST & GET. SOAP anropen tunnlar genom ett POST request.

Vikten av webformaten Räckvidden på tjänsten begränsas av formatets stöd. XML vanligaste formatet. RSS Atom JSON

3 olika modeller och vad får vi ifrån dem? REST POX/HTTP SOAP

Dessa modeller (SOAP) I grund och botten har varje arkitektur sina egna fördelar och det finns ingen tydlig vinnare för alla use-cases. SOAP och WS-* lösningar är för storföretag, med strikta krav. Men den kan vara ganska överdriven i vissa distribuerade scenarion.

Dessa modeller (REST) Skalbarhet, hög interoperabilitet. Verktygsstödet Ingen klar vinnare.

WCF har ingen favorit. Många val. Hög flexibilitet. Behöver ingen ny modell REST stöd

REST stöd (forts) Ny modell. Mappa HTTP anrop mot metoder. Ny bindning, nytt behavior. Tillämpar WebHttpBehavior för att räkna ut hur vi mappar mot metoder.

Konfigurera WCF för REST WebHttpBinding klassen producerar kanal stacken. Låter oss konfigurera en hel del. HTTP eller HTTPS. Kör över operation selection processen, och injicerar en anpassad operations selector.

Konfigurera WCF för REST Hur man skriver koden för att koppla upp/koppla ihop dessa sakerna. Lägga till WebBinding Lägga till WebBehavior

WebServiceHost Denna hosten lägger till WebBinding & Behavior

WebGetAttribute Nya attribut för att mappa HTTP request. WebGetAttribute, mappar HTTPGet mot en viss metod. UriTemplate. Vill vi använda XML eller JSON för meddelande?

WebGetAttribute

WebInvokeAttribute WebInvokeAttribute Optimerar GET separat. POST är default. Man antar att den sista parametern ska deserialiseras.

WebInvokeAttribute

UriTemplate UriTemplates mappar inkommande anrop till metoder. Kan använda wildcard i pathen (/*). Ny klass som heter System.UriTemplate. Matcha en URI:mot värdet i en UriTemplate.

WebOperationContext WebOperationContext klassen. HTTP request och response meddelandena. WebOperationContext.Current. Innehållslängd (ContentLength), Innehållstyp (ContentType). WCF försöker gömma detaljerna.

Syndication programming model

Syndication programming model

Hypermedia? Olinjär information. Hypermedia är vad www är gjord av. Hypermedia går utöver hypertext. Ett ökande behov av olika komponenter inom en enda applikation

Enhetligt gränssnitt Applikationstillståndets motor Definitionen av REST REST?

REST? Hypermedia? Application state Hypermedia myntat av Ted Nelson Olika APIER har i regel problem med att förstå varandra. Ett gemensamt format för att skriva API:er?

Hypermedia & REST? Flickr API et. Fixerat API, får ej ändras? Enkelt kunna gå mellan innehåll. Enhetligt gränssnitt.

RESTful övning ändring i ServiceLibrary Data kontraktet skall ha ett attribut inom parantes som är Namespace och tilldelas http://localhost:8080/evals. Lägg till en DataMember som är en public string Id. Lägg tillföljande OperationContracts (i Serviceklassen): Eval GetEval(string Id) List<Eval> GetAllEvals() List<Eval> GetEvalsBySubmitter(string submitter) void RemoveEval(string Id) Referera in System.ServiceModel.Web till projektet.

RESTful övning ändring i ServiceLibrary Annotera alla OperationContact med följande: SubmitEval->[WebInvoke(Method="POST", UriTemplate="evals")] GetEval(string id)->[webget(uritemplate = "eval?id={id}")] GetAllEvals->[WebGet(UriTemplate = "evals")] GetEvalsBySubmitter(string submitter)-> [WebGet(UriTemplate = "evals?submitter={submitter}")] RemoveEval(string id)-> [WebInvoke(Method = "DELETE", UriTemplate = "eval?id={id}")]

RESTful övning ändring i ServiceLibrary I serviceklassen så skall vi lägga till en variabel som heter evalcount som är 0. I metoden SubmitEval, innan vi lägger till Eval till listan så skall vi ta värdet ifrån ++evalcount och lägga till eval.id.tostring(). GetEval(string id) använd lambda uttryck för att hämta eval med id som matchar. GetAllEvals skall anropa GetEvalsBySubmitter (return satsen) med null som parameter. GetEvalsBySubmitter skall kontrollera om submitter är null eller tom sträng om så returnera listan evals, annars returnera alla evals som matchar submittern. RemoveEvals gör först en find som returnerar en eval som matchar id därefter gör vi remove på listan med den hittade eval som parameter.

RESTful övning ändring i ConsoleHost I ConsoleHost så skall er app.config se ut enligt följande:

RESTful övning ändring i ConsoleHost Referera in System.ServiceModel.Web till projektet. I program filen i ConsoleHost projektet skapa upp en instans av klassen WebServiceHost som tilldelas resultatet av new WebServiceHost(typ av (servicekontraktet)); I try delen öppna hosten som vanligt och vänta på en ReadLine() innan vi stänger den. I catch delen så skall vi anropa abort på hosten. Referera in EvalServiceLibrary till projektet.

RESTful övning ändring i Client Referera in System.ServiceModel.Web till projektet. Referera in EvalServiceLibrary till projektet. app.config skall se ut enligt följande:

RESTful övning ändring i Client I programfilen skapa: WebChannelFactory<IEvalService> cf = new WebChannelFactory<IEvalService>( new Uri("http://localhost:8080/evalservice")); IEvalService client = cf.createchannel(); Be användaren om ett kommando som vi sparar i en variabel Gör en loop som snurrar tills kommandot är lika med exit. Gör en switch över kommandot och casen skall vara: submit get list remove default

RESTful övning ändring i Client Submit skall skapa upp en eval och submitta denna. Get skall be om ett id som vi har som parameter i anropet till client.geteval(). List ber om submitterns namn som vi använder för att skicka in som parameter till GetEvalsBySubmitter() och sedan för varje eval i listan skriver vi ut värdena. Remove ber om ett id på en eval att ta bort som vi använder som parameter i anropet client.removeeval(). Default skall bara tala om att kommandot inte stöds. Utanför loopen be om ett kommando.