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

Podobné dokumenty
AJAX. Dynamické změny obsahu stránek

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

1. Úvod do Ajaxu 11. Jak Ajax funguje? 13

Základy HTML, URL, HTTP, druhy skriptování, formuláře

HTTP protokol. Zpracoval : Petr Novotný

RESTful API TAMZ 1. Cvičení 11

HTTP protokol. HTTP protokol - úvod. Zpracoval : Petr Novotný novotny0@students.zcu.cz

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

Počítačová Podpora Studia. Přednáška 5 Úvod do html a některých souvisejících IT. Web jako platforma pro vývoj aplikací.

Ajax - úvod. Klíčové pojmy: Ajax, skriptování na straně klienta a serveru, objekt XMLHttpRequest, DOM model.

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

WWW technologie. HTTP protokol

Knihovna jquery, technologie Ajax a datový formát HTML, XML, JSON a JSONP

Úvod do tvorby internetových aplikací

Úvod do Web Services

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

Protokol HTTP 4IZ228 tvorba webových stránek a aplikací

Úvod do aplikací internetu a přehled možností při tvorbě webu

3 MOŽNÉ PŘÍSTUPY K TVORBĚ APLIKACÍ NAD SVG DOKUMENTY

rychlý vývoj webových aplikací nezávislých na platformě Jiří Kosek

NSWI142 Webové aplikace Zkouškový test

Formuláře. Aby nám mohli uživatelé něco hezného napsat třeba co si o nás myslí!

Artlingua Translation API

Úvodem 9. Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10. Než začneme 11

Webové služby. Martin Sochor

Principy fungování WWW serverů a browserů. Internetové publikování

Vývoj Internetových Aplikací

Testování webových aplikací Seznam.cz

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

NSWI096 - INTERNET JavaScript

SUTOL Symposium 2014

ANOTACE vytvořených/inovovaných materiálů

Instalace a konfigurace web serveru. WA1 Martin Klíma

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

Obsah. Úvodem 9 Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10

Skriptování na straně serveru a klienta

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

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

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

Část IV - Bezpečnost 21. Kapitola 19 Bezpečnostní model ASP.NET 23

Tvorba webových stránek

Dokumentace k API SSLmarketu. verze 1.3

PŘEHLED A MOŽNOSTI VYUŽITÍ WEBOVÝCH MAPOVÝCH SLUŽEB

Zabezpečení proti SQL injection

Formuláře. Internetové publikování. Formuláře - příklad

Schéma e-pošty. UA (User Agent) rozhraní pro uživatele MTA (Message Transfer Agent) zajišťuje dopravu dopisů. disk. odesilatel. fronta dopisů SMTP

JSON API pro zjišťování cen MtG karet

Web Services na SOAP

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Hitparáda webhackingu nestárnoucí hity. Roman Kümmel

Content Security Policy

Část 1 Moderní JavaScript

Programování v jazyce JavaScript

ZP API V1.0 Návod pro vývojáře SW

HLEDEJCENY.mobi. Obsah. Mobilní verze e-shopu. Důvody instalace

Škola: Gymnázium, Brno, Slovanské náměstí 7 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN

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

1 Webový server, instalace PHP a MySQL 13

Databázové aplikace pro internetové prostředí PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku

Počítačové sítě II 17. WWW, HTTP. Miroslav Spousta, 2005

Programování v jazyce JavaScript

Web. Získání informace z internetu Grafické zobrazení dat a jejich struktura Rozšíření funkcí pomocí serveru Rozšíření funkcí pomocí prohlížeče

MODERNÍ WEB SNADNO A RYCHLE

Projekt JetConf REST API pro vzdálenou správu

Zabezpečení proti SQL injection

Vstupní požadavky, doporučení a metodické pokyny

EPLAN Electric P8 2.7 s databázemi na SQL serveru

Počítačové sítě II. 18. World Wide Web, HTTP Miroslav Spousta,

Koláčky, sezení. Martin Klíma

Kapitola 1 První kroky v tvorbě miniaplikací 11

Internet cvičení. ZS 2009/10, Cvičení 4., PHP. Tomáš Pop. DISTRIBUTED SYSTEMS RESEARCH GROUP

TNPW1 Cvičení aneta.bartuskova@uhk.cz

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

Obsah. Úvod 11 O autorovi 11 Koncept knihy 11 Zpětná vazba od čtenářů 12 Zdrojové kódy ke knize 12 Errata 12 ČÁST I VÝVOJ MOBILNÍ APLIKACE

Anabix API. Popis způsobu používání služby

Modul IRZ návod k použití

INFORMAČNÍ SYSTÉMY NA WEBU

Internet cvičení. ZS 2009/10, Cvičení 3., Tomáš Pop. DISTRIBUTED SYSTEMS RESEARCH GROUP

Mapy.cz vs. amapy.cz

DELTA - STŘEDNÍ ŠKOLA INFORMATIKY A EKONOMIE, s.r.o. Obor informační technologie AJAX ESHOP. Maturitní projekt. Třída:

TRANSPORTY výbušnin (TranV)

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

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

Nové přístupy tvorby web site. Doc. Ing. Zdeněk Havlíček, CSc. KIT PEF CZU - 13/11/2001

Programování v jazyce JavaScript

WiFi4EU Komponent sloužící k prosazování politiky. Prováděcí příručka verze 1.0

Šifrování Autentizace Bezpečnostní slabiny. Bezpečnost. Lenka Kosková Třísková, NTI TUL. 22. března 2013

Základy datových vazeb Silverlightu. Funkce Silverlightu 2. Podpora jazyků a technologie.net Framework

ČSFD.cz - technická specifikace reklamních formátů

XSLT pomocí JavaScriptu v Mozille (... Opeře a Safari)

AUTOMATICKÉ ŘÍZENÍ S INTERNETOVOU KOMUNIKACÍ V PHP Automatic Control with Internet Communication in PHP

1. Obsah. Publikováno:

Vedoucí práce: Ing. Petr Soukup, Ph.D. Fakulta stavební Katedra mapování a kartografie Obor Geoinformatika

Název Live prez Sear enta Maps

Manuál pro implementaci aplikace Na poštu

Maturitní projekt do IVT Pavel Doleček

1. Webový server, instalace PHP a MySQL 13

Od CGI k FastCGI. Uvedené dílo podléhá licenci Creative Commons Uved te autora 3.0 Česko.

Transkript:

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 18.4.2016 Webové aplikace JSON, AJAX/AJAJ, zpracování na straně JS, JSONP, proxy, REST

strana 2 JSON objekt JavaScript Object Notation { "nazev": hodnota, "cislo": 123, "retezec": "text", "pole": ["a", 1, ], "objekt": { }, } klíče by se měly dávat do " "

strana 3 JSON pole JavaScript Object Notation [ 1, 2, [3,4,5] { "klic": hodnota } ]

strana 4 JSON Je to JS validní zápis řetězce, čísla, objekty, pole, boolean, null http://json.org/ Datový formát pro přenos dat objekt nebo pole Lze spustit pomocí funkce eval(str) Nebezpečné! nevíme co je ve spouštěném textu za kód var obj = eval('(' + jsontext + ')');

strana 5 JSON API - převod text <-> data PHP API json_encode($arr), json_decode($str) JS API v PHP se pracuje s asoc. polem Knihovna JSON v moderních prohlížečích vestavěná JSON.parse(client.responseText); JSON.stringify(objekt); https://jsfiddle.net/4yy4rbwf/

strana 6 AJAX Asynchronous JavaScript and XML

strana 7 AJAX Asynchronous JavaScript and XML ale XML formát se většinou při komunikaci klient-server nahrazuje JSON zápisem

strana 8 AJAJ Asynchronous JavaScript and JSON JSON se využívá ke komunikaci mezi JS a serverem jako datový formát místo XML (AJAX) Prohlížeče umí JavaScript Rychlejší (menší objem dat) Snadnější (žádný XML DOM)

HTTP komunikace strana 9

strana 10 HTTP Požadavek např.: GET /index.html HTTP/1.1 Host: domain.cz Odopověďi např.: HTTP/1.1 200 OK + data HTTP/1.1 404 Not Found + data

strana 11 Klasická komunikace HTTP požadavky vyvolává prohlížeč při standardní navigaci na základě akcí uživatele: kliká na odkazy odesílá formuláře JavaScript: location.href, history.pushstate Meta tag redirect v <head> server posílá HTML soubory Dojde k překreslení dokumentu a změně URL v adr. řádku

strana 12 Klasická komunikace HTTP požadavky vyvolává prohlížeč při standardní navigaci na základě akcí uživatele

strana 13 Komunikace pomocí JS AJAX/AJAJ HTTP požadavek je vyvolán pomocí JS přes speciální objekt Nemusí dojít k překreslení celého dokumentu ani ke změně URL v adr. řádku

strana 14 Příklady a využití Komunikace se serverem, která proběhne, ale uživatel o ní neví Přenos dat ze serveru jen data JSON nebo XML celé kusy HTML tyto pak nahrazují obsah v dokumentu Přenos dat na server obvykle data v JSON nebo XML někdy i binární data - AJAX upload je nutné nastavit správné hlavičky typu obsahu

strana 15 Proč to používat Aplikace se rozdělí do více vrstev Živé a interaktivní stránky kratší odezvy frontend se stává samostatnou aplikací rozbíjí koncept klik-reload-klik-reload- Menší zátěž serveru Menší zátěž datového kanálu

strana 16 Proč to nepoužívat (nevýhody) Aplikace se rozdělí do více vrstev Na JS se nelze spolehnout měli bychom nabízet i nonjs řešení Některé části logiky je nutné programovat 2x nebo používat JS i na serveru? nebo přemýšlet úplně jinak?

strana 17 Omezení/nevýhody Nelze spouštět backend skripty na jiné doméně rozebereme později Složitější ladění je nutné zpracovat v JS chyby komunikace chybu na serveru není vidět je nutné logovat do souboru případně podle stavových HTTP kódů

strana 18 Proč to funguje DOM je prohlížečem dynamicky mapován na vizuální reprezentaci v prohlížeči DHTML

strana 19

strana 20 Nic nového načítání stránek (např. s JS kódem nebo daty) do skrytého prvku iframe Např. internetové chaty už kolem r.2000

strana 21 JavaScriptový HTTP klient Objekt XMLHttpRequest Důležité metody client.open(method, url, async) Otevře konexi Asynchrnonní true = nečeká a provádí další příkazy JS, vyvolávají se události client.send(data) Data jsou nepovinná, použijí se pro POST metodu client.abort()

strana 22 JavaScriptový HTTP klient Objekt XMLHttpRequest Důležité vlastnosti client.readystate 0 až 4 client.status 200, 404, HTTP kódy client.responsetext Data poslaná ze serveru jako text pro JSON client.responsexml Data poslaná ze serveru jako DOM

strana 23 JavaScriptový HTTP klient Objekt XMLHttpRequest Hlavní událost: client.onreadystatechange = function() {...}; Vyvolá se při změně vlastnosti readystate Kontrolujeme this.readystate == 4 this.status == 200

strana 24 Jak to funguje Na straně klienta požádáme server o nějakou URL Mimo GET můžeme poslat i POST, PUT nebo DELETE požadavek Server požadavek zpracuje odpoví textem, který obsahuje např. JSON nebo XML data Nebo chybovým kódem 404, 500, Na straně klienta odpověď zpracujeme

strana 25 Příklad - čistý JS var client = new XMLHttpRequest(); client.onreadystatechange = function() { if(this.readystate == 4) { if(this.status == 200) { console.log(this.responsetext); } } }; client.open("get", "http:// ", true); client.send(); https://jsfiddle.net/vgm73fl2/

strana 26 Jak v jquery Metody: $.ajax( ) $.getjson(url, callback) $.post( ) $.get( ) Příklad https://jsfiddle.net/tjmw224b/

strana 27 Změna URL v adresním řádku URL by mělo odpovídat stavu stránky Pomocí location.hash Část URL za # je libovolná Interpretuje se pouze v JS Přes objekt history lze s omezením měnit URL je to problematické (tlačítko zpět) po reloadu se URL generovaná v JS požaduje po backendu! duplikace logiky

strana 28 Změna pomocí location.hash location.hash se zpracovává jen pomocí JavaScriptu Kontrolovat např. při události window.onload a uvést stránku do požadovaného stavu. if(location.hash) { console.log(location.hash); }

strana 29 Same origin policy standardní prohlížeč brání načtení zdroje dat z jiné domény, než je v adr. řádku řešení: úprava hlaviček odpovědi access-control-allow-origin: * JSONP JSON odpověď obalím voláním funkce Vlastní proxy bez přístupu ke kódu serveru nic nezmůžu

strana 30 JSONP - JSON with padding načtení libovolného skriptu z libovolného zdroje, předání dat řešeno voláním JS funkce název funkce je předán datovému zdroji v požadavku <script type="text/javascript"> function zpracuj(data) { console.log(data) }; </script> <script src="...?f=zpracuj"></script> server vygeneruje JS tak, aby volal funkci zpracuj

strana 31 JSONP odpověď serveru <script src="...?f=zpracuj"></script> ------------- zpracuj({ nejaka: "data", formatovana: "jako JSON", klic: "hodnota", }); v naší aplikaci deklarujeme funkci a serveru předáme její název; server se postará a její zavolání ve vráceném JS

strana 32 Volání pomocí proxy v rámci backendové části vlastní aplikace vytvoříme skript, který zajistí síťovou komunikaci s jiným serverem díky tomu je AJAX/AJAJ požadavek realizován jen na vlastní doméně

strana 33 PHP proxy - knihovna curl <?php $ch = curl_init("http://www.example.com/"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); curl_close($ch); header("content-type: text/plain;charset=utf-8"); echo $data;

strana 34 REST - Representational State Transfer čtení, zápis, mazání a aktualizace dat využívá přímo HTTP metody GET POST - vytvoření nové položky PUT - obvykle aktualizace DELETE bezstavový používá XML nebo JSON

strana 35 REST - příklad GET /clanky výpis článků GET /clanky/{id} detail článku POST /clanky + JSON data PUT /clanky/{id} + JSON data DELETE /clanky/{id} POST obvykle vytváří novou položku, PUT je aktualizace

strana 36 REST API API založené na REST principu http://docs.watodoapp.apiary.io cvičení http://docs.ipicartexample.apiary.io/ https://dev.twitter.com/rest/public

Problém 1 strana 37

strana 38 Problém 2 Lze jen pomocí jquery pohodlně realizovat i rozsáhlé prezentace nebo přímo aplikace? Lze nějak zjednodušit tvorbu JS aplikací?