Aplikacje webowe. mgr inż. Aleksander Smywiński-Pohl. Elektroniczne Przetwarzanie Informacji

Podobne dokumenty
Protokół HTTP. 1. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX.

Technologie internetowe

Plan wykładu. 1. Protokół FTP. 2. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX.

Systemy internetowe. Wykład 5 Architektura WWW. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Protokół HTTP 1.1 *) Wprowadzenie. Jarek Durak. rfc2616 źródło

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Źródła. cript/1.5/reference/ Ruby on Rails: AJAX: ssays/archives/

Ataki na aplikacje WWW. Łomem, czy wytrychem? Jak dobrać się do aplikacji WWW


Sieci komputerowe. Wykład 8: Warstwa zastosowań: FTP i HTTP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

Programowanie w Internecie

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Programowanie Komponentowe WebAPI

HTTP W 5-CIU PYTANIACH MICHAŁ KOPACZ

Programowanie Sieciowe 2 Protokoły komunikacyjne: HTTP

Referat z przedmiotu Technologie Internetowe SPIS TREŚCI

Aplikacje WWW Wprowadzenie

HTTP, CGI, Perl. HTTP HyperText Transfer Protocol. CGI Common Gateway Interface. Perl Practical Extraction and Report Language

HTTP. literatura:

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

Bazy Danych i Usługi Sieciowe

Hosting WWW Bezpieczeństwo hostingu WWW. Dr Michał Tanaś (

Dokument hipertekstowy

Języki programowania wysokiego poziomu WWW

Specyfikacja instalacji usługi SMS Premium w Przelewy24.pl

Technologie sieciowe Sprawozdanie z labolatorium. Lista 5

XML-RPC: Zdalne wykonywanie procedur

Format HTML. Wybrane działy Informatyki Stosowanej. Definicja i przeznaczenie Struktura dokumentu Znaczniki Formularze i komponenty

Wybrane działy Informatyki Stosowanej

TIN Techniki Internetowe zima

Specyfikacja techniczna. mprofi Interfejs API

Specyfikacja HTTP API. Wersja 1.6

Programowanie w Internecie

PROJEKTOWANIE APLIKACJI INTERNETOWYCH

Efektywne tworzenie aplikacji webowych z wykorzystaniem AngularJS, HTML5 i JavaScript

Formularze w PHP dla początkujących

LABORATORIUM 2 WSTĘP DO SIECI TELEINFORMATYCZNYCH TABELE I FORMULARZE

I.Wojnicki, Tech.Inter.

Wybrane działy Informatyki Stosowanej

Internetowe bazy danych

SOAP i alternatywy. 1. WSDL. 2. Protokoły tekstowe XML-RPC. JSON-RPC. SOAPjr. 3. Protokoły binarne Google Protocol Bufers. Apache Thrift.

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Kierunek: Automatyka i Robotyka Studia stacjonarne I stopnia: rok I, semestr II

Programowanie internetowe

Paweł Rajba

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

HTML ciąg dalszy. Listy, formularze

EPI: Interfejs Graficzny Wykład nr 4 Podstawy frameworku Rails

Bazy Danych i Usługi Sieciowe

Formularze HTML. dr Radosław Matusik. radmat

Technologie Internetu. Protokół HTTP. Aleksander Denisiuk.

Gatesms.eu Mobilne Rozwiązania dla biznesu

Szczegółowy opis zamówienia:

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

TCP/IP. Warstwa aplikacji. mgr inż. Krzysztof Szałajko

OpenLaszlo. OpenLaszlo

FORMULARZE. G. Przęczek

Paweł Rajba,

Przykłady tworzenia aplikacji komponentowych w technologii JavaServer Faces 2.1 na podstawie

Wykład 03 JavaScript. Michał Drabik

Aplikacje internetowe

Wprowadzenie do Internetu Zajęcia 5

Obiektowy model dokumentu. Katedra Mikroelektroniki i Technik Informatycznych

Czym jest AJAX. AJAX wprowadzenie. Obiekt XMLHttpRequest (XHR) Niezbędne narzędzia. Standardowy XHR. XHR z obsługą baz danych

Sprawozdanie Sieci komputerowe i bazy danych Laboratorium nr 4

CGI (Common Gateway Interface)

Języki i narzędzia programowania III. Łukasz Kamiński Wykład II

Wybrane działy Informatyki Stosowanej

PSI Protokół HTTP + wstęp do przedmiotu. Kraków, 10 październik 2014 mgr Piotr Rytko Wydział Matematyki i Informatyki UJ

Wybrane działy Informatyki Stosowanej

Laboratorium 1 Wprowadzenie do PHP

PHP. Tematyka wykładów: Język PHP PHP i bazy danych Rozszerzenia PHP

DOKUMENTACJA TECHNICZNA SMS API MT

Zakres treści Czas. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

Formularze. 1. Formularz HTML

Architektury Usług Internetowych. Laboratorium 2 RESTful Web Services

Języki programowania wysokiego poziomu. PHP cz.3. Formularze

Realizacja Aplikacji Internetowych 2013 laboratorium cz. 2 K.M. Ocetkiewicz

Przykład programu w PHP. Wykład10.PHP ciągdalszy,str.1

Aplikacje webowe z wykorzystaniem Node.js oraz Express

Specyfikacja interfejsów usług Jednolitego Pliku Kontrolnego

Wybrane działy Informatyki Stosowanej

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Programy CGI dla baz danych

Aplikacje internetowe - laboratorium

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi

Dokumentacja Techniczna 1.2. Webtoken MT. Uruchomienie subskrybcji MT poprzez serwis WWW

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Program szkolenia: REST i Microservices w PHP

Sprawozdanie Sieci komputerowe i bazy danych Laboratorium nr 4 Wojciech Kaczmarski

Umieszczanie kodu. kod skryptu

Front-end: solidne podstawy. Wszystko, co warto wiedzieć o HTML, CSS, JavaScript i Bootstrap.

Dokumentacja REST API v 3.0. Kraków, 7 marca FreshMail, ul. Fabryczna 20a, Kraków tel , freshmail.

Podstawy JavaScript ćwiczenia

Ogólnopolskie Repozytorium Prac Dyplomowych

I.Wojnicki, Tech.Inter.

Ćwiczenie 7 - Formularze

Transkrypt:

Elektroniczne Przetwarzanie Informacji

Plan prezentacji URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST

Plan prezentacji URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST

URL Unified Resource Locator fragment protocol host port path query { }} { { }} { {}}{ { }} { { }} { { }} { http :// www.oraily.com : 80 / index.php? month=july # week3 protocol protokół komunikacyjny HTTP, HTTPS host nazwa domenowa hosta port port na którym działa usługa HTTP path ścieżka do zasobu (może być obsługiwana dynamicznie) query zapytanie, zawiera parametry żadania GET fragment adres fragmentu dokumentu (identyfikowany przez atrybut name znacznika a)

URL względny i bezwzględny URL bezwzględny zawiera protokół, nazwę hosta oraz port (opcjonalnie) URL względny nie zawiera powyższych, dzieli się na: ścieżkę bezwzględna rozpoczyna się od znaku /, np. /index.html ścieżkę względna nie rozpoczyna się od znaku /, np. index.html, oznacza zasób relatywny względem aktualnej ścieżki

Kodowanie w URLach Niektóre znaki maja specjalne znaczenie w adresie URL, np.:?, #, / Treść, która ma zostać wysłana na serwer niejednokrotnie musi zawierać te znaki (np. treść formularza) Konieczne jest zakodowanie znaków specjalnych: znaki specjalne zapisywane sa w kodzie szesnastkowym rozpoczynaja się od znaku %, po którym następuje szesnastkowy kod znaku, np. # %23.

Plan prezentacji URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST

Cykl żadanie-odpowiedź (request-response) Klient (przegladarka) wysyła żadanie Serwer wysyła odpowiedź Rysunek : http://oreilly.com/catalog/httppr/chapter/http_pkt.html

Żadanie przegladarki GET / HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/ jpeg, image/pjpeg, */* Accept-Language: en-us Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT) Host: some.host.com Connection: Keep-Alive

Wiersz żadania method {}}{ GET URL { }} { /index.html protocol { }} { HTTP/1.1 Metoda żadania: GET, POST, HEAD, PUT, DELTE, CONNECT, OPTIONS, TRACE URL zasobu: bezwzględny ścieżka do zasobu Protokół: HTTP, HTTPS + wersja

Wiersze pól nagłówkowych żadania Field name { }} { Content-Type : Field value { }} { text/html Host nazwa docelowego hosta Content-Length długość żadania (w bajtach) Content-Type typ nośnika żadania Authorization określa nazwę i hasło użytkownika User-Agent określa nazwę, wersję i platformę klienta Referer określa adres, spod którego użytkownik trafił na ten adres Cookie zawiera wartość ciasteczek ustawionych wcześniej przez serwer

Odpowiedź serwera HTTP/1.1 200 OK Date: Mon, 06 Dec 1999 20:54:26 GMT Server: Apache/1.3.6 (Unix) Last-Modified: Fri, 04 Oct 1996 14:06:11 GMT ETag: "2f5cd-964-381e1bd6" Accept-Ranges: bytes Content-length: 327 Connection: close Content-type: text/html <title>sample Homepage</title>...

Wiersz stanu protocol { }} { HTTP/1.1 status { }} { 200 OK 2xx żadanie jest poprawne 3xx przekierowanie 4xx wystapił bład, którego źródłem jest klient 5xx wystapił bład, którego źródłem jest serwer

Wiersze pól nagłówkowych odpowiedzi Content-Base określa bazy adres URL dla wszystkich względnych adresów URL Content-Length określa długość treści zasadniczej odpowiedzi Content-Type określa typ odpowiedzi (stosujac kody MIME) Date określa datę wysłania odpowiedzi ETag określa unikalny znacznik treści (ulega zmianie przy zmianie treści)

Wiersze pól nagłówkowych odpowiedzi cd. Last-Modified określa datę ostatniej modyfikacji zasobu Location w przypadku przekierowania określa docelowy adres URL Server określa nazwę i wersję serwera Set-Cookie wysyła żadanie ustawienia Cookie WWW-Authenticate określa sposób uwierzytelniania

Proxy Rysunek : http://en.wikipedia.org/wiki/file:proxy_concept_en.svg

Działanie proxy Przy pierwszym żadaniu zasobu serwer proxy kontaktuje się z oryginalnym serwerem Odpowiedź serwera jest zapisywana w pamięci podręcznej proxy Przy kolejnym żadaniu do tego samego zasobu proxy wysyła do serwera żadanie HEAD Jeśli znacznik ETag jest identyczny jak w przypadku pierwszego żadania serwer proxy nie pobiera ponownie tego zasobu W przeciwnym razie serwer proxy ponownie pobiera zasób

Plan prezentacji URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST

Przykładowy formularz Rysunek : http://en.wikipedia.org/wiki/file:sample_web_form.png

Formularz GET Formularz <form action="/app.cgi" method="get"> User Name: <input name="user" type="text" /> <input type="submit" /> </form> Zawartość komórki user Smywiński-Pohl Nagłówek GET /app.cgi?user=smywi%c5%84ski-pohl HTTP 1.1 Host: some.host.com... Treść żadania brak treści

Formularz POST Formularz <form action="/app.cgi" method="post"> User Name: <input name="user" type="text" /> <input type="submit" /> </form> Zawartość komórki user Smywiński-Pohl Nagłówek POST /app.cgi HTTP 1.1 Host: some.host.com... Treść żadania user=smywi%c5%84ski-pohl

Znacznik form method określa rodzaj żadania do serwera: GET lub POST action określa adres, pod który zostanie wysłane żadanie enctype dopuszczalne wartości (dla żadania POST): application/x-www-form-urlencoded (wartość domyślna) multipart/form-data dla formularzy do przesyłania plików autocomplete pozwala wyłaczyć automatyczne uzupełnianie formularza novalidate pozwala wyłaczyć mechanizm walidacji po stronie przegladarki

Znacznika input name nazwa pola formularza (użyta jest do zakodowania treści formularza) value wartość pola formularza (domyślna wartość ustawiana przez serwer) placeholder treść zachęcajaca do wypełnienia formularza required wskazuje, że pole jest wymagane pattern wyrażenie regularne służace do walidacji pola min, max wartość minimalna i maksymalna type typ pola formularza

Typy pól formularza HTML 4 button przycisk generujacy akcję checkbox pole opcji tak/nie file plik hidden pole ukryte password pole hasła radio pole opcji typu radio reset przycisk resetowania formularza submit przycisk wysyłki formularza text pole tekstowe

Typy pól formularza HTML 5 color wybór koloru date wybór daty datetime wybór daty i czasu email adres e-mail image obrazek month miesiac number liczba range zakres search pole wyszukiwania...

Pozostałe elementy formularza select wybór jednej z wielu opcji option opcja do wyboru textarea duże pole tekstowe

Plan prezentacji URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST

Common Gateway Interface Rysunek : http://www.irt.org/articles/js184/

CGI pierwszy jednolity mechanizm komunikacji serwera z aplikacjami webowymi definiuje interfejs pomiędzy serwerem a aplikacja standardowe wejście (STDIN) treść żadania standardowe wyjście (STDOUT) nagłówek i treść odpowiedzi zmienne środowiskowe parametry żadania CGI jest niezależne względem języka programowania skrypty sa wykonywane w momencie, w którym żadanie dociera do serwera

CGI zmienne środowiskowe CONTENT_LENGTH długość treści żadania CONTENT_TYPE typ treści QUERY_STRING treść zapytania dla żadania GET REMOTE_ADDR adres IP klienta REMOTE_PORT port klienta SERVER_ADDR adres IP serwera SERVER_PORT port serwera HTTP_ACCEPT treści akceptowane przez klienta HTTP_COOKIE treść Cookie HTTP_REFERER URL dokumentu, który skierował użytkownika do tego zasobu

Program w języku 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"); }

Wady CGI niskopoziomowy dostęp do danych żadania konieczność dekodowania danych pochodzacych z przegladarki konieczność kodowania danych wysyłanych do przegladarki (np. adresy URL) programy CGI wykonuja się jako osobne procesy implementacja interfejsu CGI zależna jest od systemu operacyjnego brak oddzielenia treści od algorytmów przetwarzajacych

Plan prezentacji URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST

JavaScript obiektowy język skryptowy działa w większości przegladarek pozwala na programowanie po stronie klienta podstawowy problem kompatybilność implementacji nie mylić z Java!

Back-end vs. front-end Rysunek : http://www.nczonline.net/blog/2013/10/07/node-js-and-the-new-web-front-end/

HTML + CSS + JS + back-end HTML CSS JavaScript back-end struktura, semantyka, treść wyglad, elementy interakcji złożona interakcja, żadania asynchroniczne generowanie treści, przechowywanie danych

Zadania JS kontrola nad przegladark a asynchroniczna komunikacja modyfikowanie dokumentu HTML ograniczenie komunikacji z serwerem szybszy interfejs użytkownika Single Page Applications (SPA)

Kompatybilność Najczęściej osiagana dzięki frameworkom, np. jquery najbardziej popularna biblioteka JS ułatwia operacja takie jak: wybieranie elementów HTML tworzenie animacji obsługę zdarzeń tworzenie żadań AJAX parsowanie JSONa

Inne frameworki AngularJS dzieło Googla Ember.js rozwijany w współpracy z Ruby on Rails Ext JS zawiera wiele gotowych komponentów UI Google Web Toolkit pozwala pisać kod w Javie SproutCore protoplasa Ember.js

Plan prezentacji URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST

Przeglad języków programowania C/C++ systemy operacyjne, systemy wbudowane, narzędzia systemowe Java aplikacje korporacyjne i duża plikacje serwerowe C# programy dla systemu Windows, aplikacje webowe Objective-C programy dla systemu MacOS i ios PHP aplikacje webowe Ruby, Python, Perl programowanie skryptowe, programowanie systemowe, aplikacje webowe JavaScript programowanie po stronie klienta (w przegladarce), ostatnio również po stronie serwera (node.js) ActionScript programowanie po stronie klienta (Flash)

Popularne frameworki webowe PHP CakePHP CodeIgiter Symfony Python Django Pylons Ruby Ruby on Rails Sinatra Java Spring MVC JSF GWT

MVC Model Widok Kontroler

Sinatra formularz (1) app1.rb require rubygems require sinatra require sinatra/reloader if development? get / do erb :index end views/index.erb Wprowadź swoje imię: <form method="post"> <input type="text" name="name"/> </form>

Sinatra formularz (1) app1.rb require rubygems require sinatra require sinatra/reloader if development? get / do erb :index end views/index.erb Wprowadź swoje imię: <form method="post"> <input type="text" name="name"/> </form>

Sinatra formularz (2) app1.rb - cd. post / do @message = "Witaj " + params[:name] erb :result end views/result.erb <%= @message %> views/layout.erb <html> <body style="width: 900px;margin: auto"> <h2>aplikacja formularz</h2> <div> <%= yield %> </div> </body> </html>

Sinatra formularz (2) app1.rb - cd. post / do @message = "Witaj " + params[:name] erb :result end views/result.erb <%= @message %> views/layout.erb <html> <body style="width: 900px;margin: auto"> <h2>aplikacja formularz</h2> <div> <%= yield %> </div> </body> </html>

Sinatra formularz (2) app1.rb - cd. post / do @message = "Witaj " + params[:name] erb :result end views/result.erb <%= @message %> views/layout.erb <html> <body style="width: 900px;margin: auto"> <h2>aplikacja formularz</h2> <div> <%= yield %> </div> </body> </html>

Plan prezentacji URL Komunikacja HTTP Formularze CGI JavaScript Frameworki webowe REST

Ograniczenia języka HTML efekt końcowy zrozumiały dla ludzi, ale nie dla maszyn formularze sa niepotrzebne, jeśli znamy format danych aplikacje na urzadzenia mobilne nie integruja się z natywnym interfejsem nadmiarowość informacji, np. wielokrotne przesyłanie szablonu strony

Podział aplikacji na backend i frontend jeden backend wspólny dla wielu frontendów/klientów aplikacja HTML-owa natywna aplikacja na urzadzeniu mobilnym inna aplikacja korzystajaca z API backend nie generuje żadnego HTML-a odpowiada jedynie na żadania HTTP na wyjściu generuje XML lub JSON (JavaScript Object Notation) frontend HTML-owy napisany w JavaScripcie komunikacja z backendem z wykorzystaniem AJAXa (Asynchronous JavaScript and XML)

REST Representational State Transfer architektura zaprojektowana dla rozproszonych serwisów webowych, np.: Amazon S3 CKAN CouchDB wykorzystuje dobrze znane cechy protokołu HTTP adresy URL czasowniki: GET, POST, PUT, DELETE formaty: HTML, JSON, XML pozostałe: proxy, firewall, caching, mime, etc. centralne pojęcie: zasób

REST Representational State Transfer architektura zaprojektowana dla rozproszonych serwisów webowych, np.: Amazon S3 CKAN CouchDB wykorzystuje dobrze znane cechy protokołu HTTP adresy URL czasowniki: GET, POST, PUT, DELETE formaty: HTML, JSON, XML pozostałe: proxy, firewall, caching, mime, etc. centralne pojęcie: zasób

REST Representational State Transfer architektura zaprojektowana dla rozproszonych serwisów webowych, np.: Amazon S3 CKAN CouchDB wykorzystuje dobrze znane cechy protokołu HTTP adresy URL czasowniki: GET, POST, PUT, DELETE formaty: HTML, JSON, XML pozostałe: proxy, firewall, caching, mime, etc. centralne pojęcie: zasób

REST Representational State Transfer architektura zaprojektowana dla rozproszonych serwisów webowych, np.: Amazon S3 CKAN CouchDB wykorzystuje dobrze znane cechy protokołu HTTP adresy URL czasowniki: GET, POST, PUT, DELETE formaty: HTML, JSON, XML pozostałe: proxy, firewall, caching, mime, etc. centralne pojęcie: zasób

REST Representational State Transfer architektura zaprojektowana dla rozproszonych serwisów webowych, np.: Amazon S3 CKAN CouchDB wykorzystuje dobrze znane cechy protokołu HTTP adresy URL czasowniki: GET, POST, PUT, DELETE formaty: HTML, JSON, XML pozostałe: proxy, firewall, caching, mime, etc. centralne pojęcie: zasób

REST Representational State Transfer architektura zaprojektowana dla rozproszonych serwisów webowych, np.: Amazon S3 CKAN CouchDB wykorzystuje dobrze znane cechy protokołu HTTP adresy URL czasowniki: GET, POST, PUT, DELETE formaty: HTML, JSON, XML pozostałe: proxy, firewall, caching, mime, etc. centralne pojęcie: zasób

REST zasady działania identyfikowanie zasobów poprzez adres URL http://example.com/cars kolekcja zasobów http://example.com/cars/1 pojedynczy zasób odczytywanie/modyfikowanie zasobu z wykorzystaniem dokumentó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> CRUD czasowniki HTTP: GET, POST, PUT, DELETE linki w dokumencie identyfikuja inne możliwe akcje do wykonania

REST zasady działania identyfikowanie zasobów poprzez adres URL http://example.com/cars kolekcja zasobów http://example.com/cars/1 pojedynczy zasób odczytywanie/modyfikowanie zasobu z wykorzystaniem dokumentó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> CRUD czasowniki HTTP: GET, POST, PUT, DELETE linki w dokumencie identyfikuja inne możliwe akcje do wykonania

REST zasady działania identyfikowanie zasobów poprzez adres URL http://example.com/cars kolekcja zasobów http://example.com/cars/1 pojedynczy zasób odczytywanie/modyfikowanie zasobu z wykorzystaniem dokumentó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> CRUD czasowniki HTTP: GET, POST, PUT, DELETE linki w dokumencie identyfikuja inne możliwe akcje do wykonania

REST zasady działania identyfikowanie zasobów poprzez adres URL http://example.com/cars kolekcja zasobów http://example.com/cars/1 pojedynczy zasób odczytywanie/modyfikowanie zasobu z wykorzystaniem dokumentó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> CRUD czasowniki HTTP: GET, POST, PUT, DELETE linki w dokumencie identyfikuja inne możliwe akcje do wykonania

REST zasady działania identyfikowanie zasobów poprzez adres URL http://example.com/cars kolekcja zasobów http://example.com/cars/1 pojedynczy zasób odczytywanie/modyfikowanie zasobu z wykorzystaniem dokumentó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> CRUD czasowniki HTTP: GET, POST, PUT, DELETE linki w dokumencie identyfikuja inne możliwe akcje do wykonania

REST zasady działania identyfikowanie zasobów poprzez adres URL http://example.com/cars kolekcja zasobów http://example.com/cars/1 pojedynczy zasób odczytywanie/modyfikowanie zasobu z wykorzystaniem dokumentó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> CRUD czasowniki HTTP: GET, POST, PUT, DELETE linki w dokumencie identyfikuja inne możliwe akcje do wykonania

REST zalety wiele frameworków wspiera REST (np. Ruby on Rails) w 2011 roku ok. 75% serwisów udostępniało API w REST możliwość wykorzystania istniejacej infrastruktury dla protokołu HTTP (DNS, proxy, uwierzytelnianie, etc.)