Aplikacje webowe - apohllo.plapohllo.pl/texts/6-cgi.pdf · Aplikacje webowe. URL Komunikacja HTTP...
Transcript of Aplikacje webowe - apohllo.plapohllo.pl/texts/6-cgi.pdf · Aplikacje webowe. URL Komunikacja HTTP...
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Aplikacje webowe
mgr inz. Aleksander Smywinski-Pohl
Elektroniczne Przetwarzanie Informacji
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Plan prezentacji
URL
Komunikacja HTTP
Formularze
CGI
JavaScript
Frameworki webowe
REST
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Plan prezentacji
URL
Komunikacja HTTP
Formularze
CGI
JavaScript
Frameworki webowe
REST
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
URL – Unified Resource Locator
protocol︷ ︸︸ ︷http ://
host︷ ︸︸ ︷www.oraily.com :
port︷︸︸︷80 /
path︷ ︸︸ ︷index.php?
query︷ ︸︸ ︷month=july#
fragment︷ ︸︸ ︷week3
I protocol – protokół komunikacyjny HTTP, HTTPSI host – nazwa domenowa hostaI port – port na którym działa usługa HTTPI path – sciezka do zasobu (moze byc obsługiwana
dynamicznie)I query – zapytanie, zawiera parametry zadania GETI fragment – adres fragmentu dokumentu (identyfikowany
przez atrybut name znacznika a)
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
URL wzgledny i bezwzgledny
I URL bezwzgledny – zawiera protokół, nazwe hosta orazport (opcjonalnie)
I URL wzgledny – nie zawiera powyzszych, dzieli sie na:I sciezke bezwzgledna – rozpoczyna sie od znaku /,
np. /index.htmlI sciezke wzgledna – nie rozpoczyna sie od znaku /,
np. index.html, oznacza zasób relatywny wzgledemaktualnej sciezki
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Kodowanie w URLach
I Niektóre znaki maja specjalne znaczenie w adresie URL,np.: ?, #, /
I Tresc, która ma zostac wysłana na serwer niejednokrotniemusi zawierac te znaki (np. tresc formularza)
I Konieczne jest zakodowanie znaków specjalnych:I znaki specjalne zapisywane sa w kodzie szesnastkowymI rozpoczynaja sie od znaku %, po którym nastepuje
szesnastkowy kod znaku, np. # → %23.
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Plan prezentacji
URL
Komunikacja HTTP
Formularze
CGI
JavaScript
Frameworki webowe
REST
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Cykl zadanie-odpowiedz (request-response)
I Klient (przegladarka)wysyła zadanie
I Serwer wysyła odpowiedz
Rysunek :http://oreilly.com/catalog/httppr/chapter/http_pkt.html
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Zadanie przegladarki
GET / HTTP/1.1Accept: image/gif, image/x-xbitmap, image/
jpeg, image/pjpeg, */*Accept-Language: en-usAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE
5.01; Windows NT)Host: some.host.comConnection: Keep-Alive
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Wiersz zadania
method︷︸︸︷GET
URL︷ ︸︸ ︷/index.html
protocol︷ ︸︸ ︷HTTP/1.1
I Metoda zadania: GET, POST, HEAD, PUT, DELTE,CONNECT, OPTIONS, TRACE
I URL zasobu: bezwzgledny sciezka do zasobuI Protokół: HTTP, HTTPS + wersja
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Wiersze pól nagłówkowych zadania
Field name︷ ︸︸ ︷Content-Type:
Field value︷ ︸︸ ︷text/html
I Host – nazwa docelowego hostaI Content-Length – długosc zadania (w bajtach)I Content-Type – typ nosnika zadaniaI Authorization – okresla nazwe i hasło uzytkownikaI User-Agent – okresla nazwe, wersje i platforme klientaI Referer – okresla adres, spod którego uzytkownik trafił
na ten adresI Cookie – zawiera wartosc ciasteczek ustawionych
wczesniej przez serwer
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Odpowiedz serwera
HTTP/1.1 200 OKDate: Mon, 06 Dec 1999 20:54:26 GMTServer: Apache/1.3.6 (Unix)Last-Modified: Fri, 04 Oct 1996 14:06:11 GMTETag: "2f5cd-964-381e1bd6"Accept-Ranges: bytesContent-length: 327Connection: closeContent-type: text/html
<title>Sample Homepage</title>...
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Wiersz stanu
protocol︷ ︸︸ ︷HTTP/1.1
status︷ ︸︸ ︷200 OK
I 2xx – zadanie jest poprawneI 3xx – przekierowanieI 4xx – wystapił bład, którego zródłem jest klientI 5xx – wystapił bład, którego zródłem jest serwer
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Wiersze pól nagłówkowych odpowiedzi
I Content-Base – okresla bazy adres URL dla wszystkichwzglednych adresów URL
I Content-Length – okresla długosc tresci zasadniczejodpowiedzi
I Content-Type – okresla typ odpowiedzi (stosujac kodyMIME)
I Date – okresla date wysłania odpowiedziI ETag – okresla unikalny znacznik tresci (ulega zmianie
przy zmianie tresci)
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Wiersze pól nagłówkowych odpowiedzi – cd.
I Last-Modified – okresla date ostatniej modyfikacjizasobu
I Location – w przypadku przekierowania okresladocelowy adres URL
I Server – okresla nazwe i wersje serweraI Set-Cookie – wysyła zadanie ustawienia CookieI WWW-Authenticate – okresla sposób uwierzytelniania
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Proxy
Rysunek : http://en.wikipedia.org/wiki/File:Proxy_concept_en.svg
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Działanie proxy
I Przy pierwszym zadaniu zasobu serwer proxy kontaktujesie z oryginalnym serwerem
I Odpowiedz serwera jest zapisywana w pamieci podrecznejproxy
I Przy kolejnym zadaniu do tego samego zasobu proxywysyła do serwera zadanie HEAD
I Jesli znacznik ETag jest identyczny jak w przypadkupierwszego zadania serwer proxy nie pobiera ponownietego zasobu
I W przeciwnym razie serwer proxy ponownie pobiera zasób
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Plan prezentacji
URL
Komunikacja HTTP
Formularze
CGI
JavaScript
Frameworki webowe
REST
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Przykładowy formularz
Rysunek : http://en.wikipedia.org/wiki/File:Sample_web_form.pngmgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Formularz GET
I Formularz<form action="/app.cgi" method="GET">User Name: <input name="user" type="text" /><input type="submit" /></form>
I Zawartosc komórki userSmywinski-Pohl
I NagłówekGET /app.cgi?user=Smywi%C5%84ski-Pohl HTTP 1.1Host: some.host.com...
I Tresc zadaniabrak tresci
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Formularz POST
I Formularz<form action="/app.cgi" method="POST">User Name: <input name="user" type="text" /><input type="submit" /></form>
I Zawartosc komórki userSmywinski-Pohl
I NagłówekPOST /app.cgi HTTP 1.1Host: some.host.com...
I Tresc zadaniauser=Smywi%C5%84ski-Pohl
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Znacznik form
I method – okresla rodzaj zadania do serwera: GET lubPOST
I action – okresla adres, pod który zostanie wysłanezadanie
I enctype – dopuszczalne wartosci (dla zadania POST):I application/x-www-form-urlencoded (wartosc
domyslna)I multipart/form-data – dla formularzy do przesyłania
plikówI autocomplete – pozwala wyłaczyc automatyczne
uzupełnianie formularzaI novalidate – pozwala wyłaczyc mechanizm walidacji po
stronie przegladarki
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Znacznika input
I name – nazwa pola formularza (uzyta jest do zakodowaniatresci formularza)
I value – wartosc pola formularza (domyslna wartoscustawiana przez serwer)
I placeholder – tresc zachecajaca do wypełnieniaformularza
I required – wskazuje, ze pole jest wymaganeI pattern – wyrazenie regularne słuzace do walidacji polaI min, max – wartosc minimalna i maksymalnaI type – typ pola formularza
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Typy pól formularza – HTML 4
I button – przycisk generujacy akcjeI checkbox – pole opcji tak/nieI file – plikI hidden – pole ukryteI password – pole hasłaI radio – pole opcji typu „radio”I reset – przycisk resetowania formularzaI submit – przycisk wysyłki formularzaI text – pole tekstowe
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Typy pól formularza – HTML 5
I color – wybór koloruI date – wybór datyI datetime – wybór daty i czasuI email – adres e-mailI image – obrazekI month – miesiacI number – liczbaI range – zakresI search – pole wyszukiwaniaI ...
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Pozostałe elementy formularza
I select – wybór jednej z wielu opcjiI option – opcja do wyboruI textarea – duze pole tekstowe
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Plan prezentacji
URL
Komunikacja HTTP
Formularze
CGI
JavaScript
Frameworki webowe
REST
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Common Gateway Interface
Rysunek : http://www.irt.org/articles/js184/
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
CGI
I pierwszy jednolity mechanizm komunikacji serwera zaplikacjami webowymi
I definiuje interfejs pomiedzy serwerem a aplikacjaI standardowe wejscie (STDIN) – tresc zadaniaI standardowe wyjscie (STDOUT) – nagłówek i tresc
odpowiedziI zmienne srodowiskowe – parametry zadania
I CGI jest niezalezne wzgledem jezyka programowaniaI skrypty sa wykonywane w momencie, w którym zadanie
dociera do serwera
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
CGI – zmienne srodowiskowe
I CONTENT_LENGTH – długosc tresci zadaniaI CONTENT_TYPE – typ tresciI QUERY_STRING – tresc zapytania dla zadania GETI REMOTE_ADDR – adres IP klientaI REMOTE_PORT – port klientaI SERVER_ADDR – adres IP serweraI SERVER_PORT – port serweraI HTTP_ACCEPT – tresci akceptowane przez klientaI HTTP_COOKIE – tresc CookieI HTTP_REFERER – URL dokumentu, który skierował
uzytkownika do tego zasobu
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Program w jezyku C jako skrypt CGI
#include <stdio.h>#include <stdlib.h>
int main (){printf("Content-Type: text/html\n\n");printf("<html>\n");printf("<body>\n");printf("User IP: %s<br>\n",getenv("REMOTE_ADDR"));printf("User Port: %s<br>\n",getenv("REMOTE_PORT"));printf("Server IP: %s<br>\n",getenv("SERVER_ADDR"));printf("Server Port: %s<br>\n",getenv("SERVER_PORT"));printf("Query string: %s<br>\n",getenv("QUERY_STRING"));printf("</body>\n");printf("</html>\n");
}
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Wady CGI
I niskopoziomowy dostep do danych zadaniaI koniecznosc dekodowania danych pochodzacych z
przegladarkiI koniecznosc kodowania danych wysyłanych do
przegladarki (np. adresy URL)I programy CGI wykonuja sie jako osobne procesyI implementacja interfejsu CGI zalezna jest od systemu
operacyjnegoI brak oddzielenia tresci od algorytmów przetwarzajacych
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Plan prezentacji
URL
Komunikacja HTTP
Formularze
CGI
JavaScript
Frameworki webowe
REST
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
JavaScript
I obiektowy jezyk skryptowyI działa w wiekszosci przegladarekI pozwala na programowanie po stronie klientaI podstawowy problem – kompatybilnosc implementacjiI nie mylic z Java!
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Back-end vs. front-end
Rysunek : http://www.nczonline.net/blog/2013/10/07/node-js-and-the-new-web-front-end/mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
HTML + CSS + JS + back-end
HTML struktura, semantyka, tresc
CSS wyglad, elementy interakcji
JavaScript złozona interakcja, zadania asynchroniczne
back-end generowanie tresci, przechowywanie danych
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Zadania JS
I kontrola nad przegladarkaI asynchroniczna komunikacjaI modyfikowanie dokumentu HTMLI ograniczenie komunikacji z serweremI szybszy interfejs uzytkownikaI Single Page Applications (SPA)
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Kompatybilnosc
Najczesciej osiagana dzieki frameworkom, np. jQueryI najbardziej popularna biblioteka JSI ułatwia operacja takie jak:
I wybieranie elementów HTMLI tworzenie animacjiI obsługe zdarzenI tworzenie zadan AJAXI parsowanie JSONa
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Inne frameworki
I AngularJS – dzieło GooglaI Ember.js – rozwijany w współpracy z Ruby on RailsI Ext JS – zawiera wiele gotowych komponentów UII Google Web Toolkit – pozwala pisac kod w JavieI SproutCore – protoplasa Ember.js
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Plan prezentacji
URL
Komunikacja HTTP
Formularze
CGI
JavaScript
Frameworki webowe
REST
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Przeglad jezyków programowania
I C/C++ – systemy operacyjne, systemy wbudowane,narzedzia systemowe
I Java – aplikacje korporacyjne i duza plikacje serweroweI C# – programy dla systemu Windows, aplikacje weboweI Objective-C – programy dla systemu MacOS i iOSI PHP – aplikacje weboweI Ruby, Python, Perl – programowanie skryptowe,
programowanie systemowe, aplikacje weboweI JavaScript – programowanie po stronie klienta (w
przegladarce), ostatnio równiez po stronie serwera(node.js)
I ActionScript – programowanie po stronie klienta (Flash)
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Popularne frameworki webowe
I PHPI CakePHPI CodeIgiterI Symfony
I PythonI DjangoI Pylons
I RubyI Ruby on RailsI Sinatra
I JavaI Spring MVCI JSFI GWT
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
MVC – Model Widok Kontroler
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Sinatra – formularz (1)
I app1.rbrequire ’rubygems’require ’sinatra’require ’sinatra/reloader’ if development?
get ’/’ doerb :index
end
I views/index.erbWprowadz swoje imie:<form method="post"><input type="text" name="name"/>
</form>
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Sinatra – formularz (1)
I app1.rbrequire ’rubygems’require ’sinatra’require ’sinatra/reloader’ if development?
get ’/’ doerb :index
end
I views/index.erbWprowadz swoje imie:<form method="post"><input type="text" name="name"/>
</form>
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Sinatra – formularz (2)
I app1.rb - cd.post ’/’ do
@message = "Witaj " + params[:name]erb :result
end
I views/result.erb<%= @message %>
I views/layout.erb<html><body style="width: 900px;margin: auto"><h2>Aplikacja formularz</h2><div>
<%= yield %></div>
</body></html>
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Sinatra – formularz (2)
I app1.rb - cd.post ’/’ do
@message = "Witaj " + params[:name]erb :result
end
I views/result.erb<%= @message %>
I views/layout.erb<html><body style="width: 900px;margin: auto"><h2>Aplikacja formularz</h2><div>
<%= yield %></div>
</body></html>
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Sinatra – formularz (2)
I app1.rb - cd.post ’/’ do
@message = "Witaj " + params[:name]erb :result
end
I views/result.erb<%= @message %>
I views/layout.erb<html><body style="width: 900px;margin: auto"><h2>Aplikacja formularz</h2><div>
<%= yield %></div>
</body></html>
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Plan prezentacji
URL
Komunikacja HTTP
Formularze
CGI
JavaScript
Frameworki webowe
REST
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Ograniczenia jezyka HTML
I efekt koncowy zrozumiały dla ludzi, ale nie dla maszynI formularze sa niepotrzebne, jesli znamy format danychI aplikacje na urzadzenia mobilne nie integruja sie z
natywnym interfejsemI nadmiarowosc informacji, np. wielokrotne przesyłanie
szablonu strony
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
Podział aplikacji na backend i frontend
I jeden backend wspólny dla wielu frontendów/klientówI aplikacja HTML-owaI natywna aplikacja na urzadzeniu mobilnymI inna aplikacja korzystajaca z API
I backend nie generuje zadnego HTML-aI odpowiada jedynie na zadania HTTPI na wyjsciu generuje XML lub JSON (JavaScript Object
Notation)I frontend HTML-owy napisany w JavaScripcieI komunikacja z backendem z wykorzystaniem AJAXa
(Asynchronous JavaScript and XML)
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
REST – Representational State Transfer
I architektura zaprojektowana dla rozproszonych serwisówwebowych, np.:
I Amazon S3I CKANI CouchDB
I wykorzystuje dobrze znane cechy protokołu HTTPI adresy URLI czasowniki: GET, POST, PUT, DELETEI formaty: HTML, JSON, XMLI pozostałe: proxy, firewall, caching, mime, etc.
I centralne pojecie: zasób
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
REST – Representational State Transfer
I architektura zaprojektowana dla rozproszonych serwisówwebowych, np.:
I Amazon S3I CKANI CouchDB
I wykorzystuje dobrze znane cechy protokołu HTTPI adresy URLI czasowniki: GET, POST, PUT, DELETEI formaty: HTML, JSON, XMLI pozostałe: proxy, firewall, caching, mime, etc.
I centralne pojecie: zasób
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
REST – Representational State Transfer
I architektura zaprojektowana dla rozproszonych serwisówwebowych, np.:
I Amazon S3I CKANI CouchDB
I wykorzystuje dobrze znane cechy protokołu HTTPI adresy URLI czasowniki: GET, POST, PUT, DELETEI formaty: HTML, JSON, XMLI pozostałe: proxy, firewall, caching, mime, etc.
I centralne pojecie: zasób
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
REST – Representational State Transfer
I architektura zaprojektowana dla rozproszonych serwisówwebowych, np.:
I Amazon S3I CKANI CouchDB
I wykorzystuje dobrze znane cechy protokołu HTTPI adresy URLI czasowniki: GET, POST, PUT, DELETEI formaty: HTML, JSON, XMLI pozostałe: proxy, firewall, caching, mime, etc.
I centralne pojecie: zasób
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
REST – Representational State Transfer
I architektura zaprojektowana dla rozproszonych serwisówwebowych, np.:
I Amazon S3I CKANI CouchDB
I wykorzystuje dobrze znane cechy protokołu HTTPI adresy URLI czasowniki: GET, POST, PUT, DELETEI formaty: HTML, JSON, XMLI pozostałe: proxy, firewall, caching, mime, etc.
I centralne pojecie: zasób
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
REST – Representational State Transfer
I architektura zaprojektowana dla rozproszonych serwisówwebowych, np.:
I Amazon S3I CKANI CouchDB
I wykorzystuje dobrze znane cechy protokołu HTTPI adresy URLI czasowniki: GET, POST, PUT, DELETEI formaty: HTML, JSON, XMLI pozostałe: proxy, firewall, caching, mime, etc.
I centralne pojecie: zasób
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
REST – zasady działania
I identyfikowanie zasobów poprzez adres URLI http://example.com/cars – kolekcja zasobówI http://example.com/cars/1 – pojedynczy zasób
I odczytywanie/modyfikowanie zasobu z wykorzystaniemdokumentów opisujacych stan<?xml version="1.0" encoding="UTF-8"?><book><author-id type="integer">1</author-id><id type="integer">1</id><title>Alef</title>
</book>
I CRUD – czasowniki HTTP: GET, POST, PUT, DELETEI linki w dokumencie identyfikuja inne mozliwe akcje do
wykonania
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
REST – zasady działania
I identyfikowanie zasobów poprzez adres URLI http://example.com/cars – kolekcja zasobówI http://example.com/cars/1 – pojedynczy zasób
I odczytywanie/modyfikowanie zasobu z wykorzystaniemdokumentów opisujacych stan<?xml version="1.0" encoding="UTF-8"?><book><author-id type="integer">1</author-id><id type="integer">1</id><title>Alef</title>
</book>
I CRUD – czasowniki HTTP: GET, POST, PUT, DELETEI linki w dokumencie identyfikuja inne mozliwe akcje do
wykonania
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
REST – zasady działania
I identyfikowanie zasobów poprzez adres URLI http://example.com/cars – kolekcja zasobówI http://example.com/cars/1 – pojedynczy zasób
I odczytywanie/modyfikowanie zasobu z wykorzystaniemdokumentów opisujacych stan<?xml version="1.0" encoding="UTF-8"?><book><author-id type="integer">1</author-id><id type="integer">1</id><title>Alef</title>
</book>
I CRUD – czasowniki HTTP: GET, POST, PUT, DELETEI linki w dokumencie identyfikuja inne mozliwe akcje do
wykonania
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
REST – zasady działania
I identyfikowanie zasobów poprzez adres URLI http://example.com/cars – kolekcja zasobówI http://example.com/cars/1 – pojedynczy zasób
I odczytywanie/modyfikowanie zasobu z wykorzystaniemdokumentów opisujacych stan<?xml version="1.0" encoding="UTF-8"?><book><author-id type="integer">1</author-id><id type="integer">1</id><title>Alef</title>
</book>
I CRUD – czasowniki HTTP: GET, POST, PUT, DELETEI linki w dokumencie identyfikuja inne mozliwe akcje do
wykonania
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
REST – zasady działania
I identyfikowanie zasobów poprzez adres URLI http://example.com/cars – kolekcja zasobówI http://example.com/cars/1 – pojedynczy zasób
I odczytywanie/modyfikowanie zasobu z wykorzystaniemdokumentów opisujacych stan<?xml version="1.0" encoding="UTF-8"?><book><author-id type="integer">1</author-id><id type="integer">1</id><title>Alef</title>
</book>
I CRUD – czasowniki HTTP: GET, POST, PUT, DELETEI linki w dokumencie identyfikuja inne mozliwe akcje do
wykonania
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
REST – zasady działania
I identyfikowanie zasobów poprzez adres URLI http://example.com/cars – kolekcja zasobówI http://example.com/cars/1 – pojedynczy zasób
I odczytywanie/modyfikowanie zasobu z wykorzystaniemdokumentów opisujacych stan<?xml version="1.0" encoding="UTF-8"?><book><author-id type="integer">1</author-id><id type="integer">1</id><title>Alef</title>
</book>
I CRUD – czasowniki HTTP: GET, POST, PUT, DELETEI linki w dokumencie identyfikuja inne mozliwe akcje do
wykonania
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST
REST – zalety
I wiele frameworków wspiera REST (np. Ruby on Rails)I w 2011 roku ok. 75% serwisów udostepniało API w RESTI mozliwosc wykorzystania istniejacej infrastruktury dla
protokołu HTTP (DNS, proxy, uwierzytelnianie, etc.)
mgr inz. Aleksander Smywinski-Pohl EPI
Aplikacje webowe