Aplikacje webowe - apohllo.plapohllo.pl/texts/6-cgi.pdf · Aplikacje webowe. URL Komunikacja HTTP...

64
URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST Aplikacje webowe mgr in˙ z. Aleksander Smywi ´ nski-Pohl Elektroniczne Przetwarzanie Informacji mgr in˙ z. Aleksander Smywi ´ nski-Pohl EPI Aplikacje webowe

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