124
HTTP и приятели HTTP/1.1 200 OK Стефан: Кънев Николай: Бачийски Кога: 22.10.2008

5. HTTP и приятели

Embed Size (px)

Citation preview

Page 1: 5. HTTP и приятели

HTTP и приятели

HTTP/1.1 200 OKСтефан: КъневНиколай: БачийскиКога: 22.10.2008

Page 2: 5. HTTP и приятели

защо изглеждам сънен

Page 3: 5. HTTP и приятели

http://fmi.rails-bg.net/topics

днес ще разберат как от това се получава

Page 4: 5. HTTP и приятели

това

(с готин transition)

Page 5: 5. HTTP и приятели

http://първият компонент

Page 6: 5. HTTP и приятели

Request

Page 7: 5. HTTP и приятели

Response

Page 8: 5. HTTP и приятели

http://fmi.rails-bg.net/topics

TCP връзка към fmi.rails-bg.net на порт 80

fmi.rails-bg.netПенчо

Page 9: 5. HTTP и приятели

nb@creep:~$ wget -S http://fmi.rails-bg/net/topics--2008-10-22 06:56:15-- http://fmi.rails-bg/net/topicsResolving fmi.rails-bg... ^Cnb@creep:~$ wget -S http://fmi.rails-bg.net/topics--2008-10-22 06:56:27-- http://fmi.rails-bg.net/topicsResolving fmi.rails-bg.net... 78.83.99.48Connecting to fmi.rails-bg.net|78.83.99.48|:80... connected.HTTP request sent, awaiting response... HTTP/1.1 200 OK Date: Wed, 22 Oct 2008 03:56:28 GMT Server: Mongrel 1.1.5 Status: 200 OK ETag: "d442009ec5c720c14ceb0d2be6e4ccf8" X-Runtime: 0.04557 Content-Type: text/html; charset=utf-8 Content-Length: 5048 Cache-Control: private, max-age=0, must-revalidate Set-Cookie: _trane_session=ee47058b784246a19b9e0efc6762fc9d; path=/ Via: 1.0 fmi.rails-bg.net Keep-Alive: timeout=15, max=100 Connection: Keep-Alive

nb@creep:~$ wget -S http://fmi.rails-bg/net/topics--2008-10-22 06:56:15-- http://fmi.rails-bg/net/topicsResolving fmi.rails-bg... ^Cnb@creep:~$ wget -S http://fmi.rails-bg.net/topics--2008-10-22 06:56:27-- http://fmi.rails-bg.net/topicsResolving fmi.rails-bg.net... 78.83.99.48Connecting to fmi.rails-bg.net|78.83.99.48|:80... connected.HTTP request sent, awaiting response... HTTP/1.1 200 OK Date: Wed, 22 Oct 2008 03:56:28 GMT Server: Mongrel 1.1.5 Status: 200 OK ETag: "d442009ec5c720c14ceb0d2be6e4ccf8" X-Runtime: 0.04557 Content-Type: text/html; charset=utf-8 Content-Length: 5048 Cache-Control: private, max-age=0, must-revalidate Set-Cookie: _trane_session=ee47058b784246a19b9e0efc6762fc9d; path=/ Via: 1.0 fmi.rails-bg.net Keep-Alive: timeout=15, max=100 Connection: Keep-Alive

nb@creep:~$ wget -S http://fmi.rails-bg/net/topics--2008-10-22 06:56:15-- http://fmi.rails-bg/net/topicsResolving fmi.rails-bg... ^Cnb@creep:~$ wget -S http://fmi.rails-bg.net/topics--2008-10-22 06:56:27-- http://fmi.rails-bg.net/topicsResolving fmi.rails-bg.net... 78.83.99.48Connecting to fmi.rails-bg.net|78.83.99.48|:80... connected.HTTP request sent, awaiting response... HTTP/1.1 200 OK Date: Wed, 22 Oct 2008 03:56:28 GMT Server: Mongrel 1.1.5 Status: 200 OK ETag: "d442009ec5c720c14ceb0d2be6e4ccf8" X-Runtime: 0.04557 Content-Type: text/html; charset=utf-8 Content-Length: 5048 Cache-Control: private, max-age=0, must-revalidate Set-Cookie: _trane_session=ee47058b784246a19b9e0efc6762fc9d; path=/ Via: 1.0 fmi.rails-bg.net Keep-Alive: timeout=15, max=100 Connection: Keep-Alive

nb@creep:~$ wget -S http://fmi.rails-bg/net/topics--2008-10-22 06:56:15-- http://fmi.rails-bg/net/topicsResolving fmi.rails-bg... ^Cnb@creep:~$ wget -S http://fmi.rails-bg.net/topics--2008-10-22 06:56:27-- http://fmi.rails-bg.net/topicsResolving fmi.rails-bg.net... 78.83.99.48Connecting to fmi.rails-bg.net|78.83.99.48|:80... connected.HTTP request sent, awaiting response... HTTP/1.1 200 OK Date: Wed, 22 Oct 2008 03:56:28 GMT Server: Mongrel 1.1.5 Status: 200 OK ETag: "d442009ec5c720c14ceb0d2be6e4ccf8" X-Runtime: 0.04557 Content-Type: text/html; charset=utf-8 Content-Length: 5048 Cache-Control: private, max-age=0, must-revalidate Set-Cookie: _trane_session=ee47058b784246a19b9e0efc6762fc9d; path=/ Via: 1.0 fmi.rails-bg.net Keep-Alive: timeout=15, max=100 Connection: Keep-Alive

текстов

Page 10: 5. HTTP и приятели

не е binary

Page 11: 5. HTTP и приятели

Request

Page 12: 5. HTTP и приятели

GET /topics?type=stupid&subtype=rockingchair

Page 13: 5. HTTP и приятели

GET не е хубаво да променя състоянието

Page 14: 5. HTTP и приятели

POST

Page 15: 5. HTTP и приятели

PUT

Page 16: 5. HTTP и приятели

DELETE

Page 17: 5. HTTP и приятели

глава / header

Page 18: 5. HTTP и приятели

Тяло

Page 19: 5. HTTP и приятели

И да не се сърдят дамите :-)

Page 20: 5. HTTP и приятели

глава / header

Page 21: 5. HTTP и приятели

header-и на заявка

Page 22: 5. HTTP и приятели

GET /topics HTTP/1.1

header-и на заявка

Page 23: 5. HTTP и приятели

GET /topics HTTP/1.1Host: fmi.rails-bg.net

header-и на заявка

Page 24: 5. HTTP и приятели

GET /topics HTTP/1.1Host: fmi.rails-bg.netUser-agent: Mozilla/5.0...

header-и на заявка

Page 25: 5. HTTP и приятели

GET /topics HTTP/1.1Host: fmi.rails-bg.netUser-agent: Mozilla/5.0...Accept: text/html, application/xhtml+xml

header-и на заявка

Page 26: 5. HTTP и приятели

GET /topics HTTP/1.1Host: fmi.rails-bg.netUser-agent: Mozilla/5.0...Accept: text/html, application/xhtml+xml

header-и на заявка

Page 27: 5. HTTP и приятели

header-и на заявка

content-type за тялото

Page 28: 5. HTTP и приятели

POST /topics HTTP/1.1

header-и на заявка

content-type за тялото

Page 29: 5. HTTP и приятели

POST /topics HTTP/1.1Host: fmi.rails-bg.net

header-и на заявка

content-type за тялото

Page 30: 5. HTTP и приятели

POST /topics HTTP/1.1Host: fmi.rails-bg.netUser-agent: Mozilla/5.0...

header-и на заявка

content-type за тялото

Page 31: 5. HTTP и приятели

POST /topics HTTP/1.1Host: fmi.rails-bg.netUser-agent: Mozilla/5.0...Accept: text/html, application/xhtml+xml

header-и на заявка

content-type за тялото

Page 32: 5. HTTP и приятели

POST /topics HTTP/1.1Host: fmi.rails-bg.netUser-agent: Mozilla/5.0...Accept: text/html, application/xhtml+xml

Content-Type: application/x-www-form-encoded

header-и на заявка

content-type за тялото

Page 33: 5. HTTP и приятели

HTTP/1.1 200 OKContent-Type: text/htmlDate: Wed, 22 Oct 2008 03:56:28 GMTContent-Length: 5048

Page 34: 5. HTTP и приятели

1xx Informational 2xx Successes 3xx Redirection4xx Client Error 5xx Server Error

200 OK301 Moved Permanently 404 Not Found

500 Internal Server Error

Page 35: 5. HTTP и приятели

Тяло

Page 36: 5. HTTP и приятели

Тяло

Page 37: 5. HTTP и приятели
Page 38: 5. HTTP и приятели

POST /topics HTTP/1.1

Page 39: 5. HTTP и приятели

POST /topics HTTP/1.1Host: fmi.rails-bg.net

Page 40: 5. HTTP и приятели

POST /topics HTTP/1.1Host: fmi.rails-bg.netContent-Type: application/x-www-form-encoded

Page 41: 5. HTTP и приятели

POST /topics HTTP/1.1Host: fmi.rails-bg.netContent-Type: application/x-www-form-encoded

title=The Best Title&content=...

Page 42: 5. HTTP и приятели
Page 43: 5. HTTP и приятели

HTTP/1.1 200 OK

Page 44: 5. HTTP и приятели

HTTP/1.1 200 OKContent-Type: text/html

Page 45: 5. HTTP и приятели

HTTP/1.1 200 OKContent-Type: text/htmlDate: Wed, 22 Oct 2008 03:56:28 GMT

Page 46: 5. HTTP и приятели

HTTP/1.1 200 OKContent-Type: text/htmlDate: Wed, 22 Oct 2008 03:56:28 GMTContent-Length: 5048

Page 47: 5. HTTP и приятели

HTTP/1.1 200 OKContent-Type: text/htmlDate: Wed, 22 Oct 2008 03:56:28 GMTContent-Length: 5048

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML...

Page 48: 5. HTTP и приятели

HTTP/1.1 200 OKContent-Type: text/htmlDate: Wed, 22 Oct 2008 03:56:28 GMTContent-Length: 5048

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML...<html lang='bg' xml:lang='bg'...

Page 49: 5. HTTP и приятели

HTTP/1.1 200 OKContent-Type: text/htmlDate: Wed, 22 Oct 2008 03:56:28 GMTContent-Length: 5048

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML...<html lang='bg' xml:lang='bg'... <head>

Page 50: 5. HTTP и приятели

HTTP/1.1 200 OKContent-Type: text/htmlDate: Wed, 22 Oct 2008 03:56:28 GMTContent-Length: 5048

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML...<html lang='bg' xml:lang='bg'... <head> <title>Програмирани с Ruby и Rails...

Page 51: 5. HTTP и приятели

Statefmi.rails-bg.net

Page 52: 5. HTTP и приятели

Statefmi.rails-bg.net

10:01

/topics

Page 53: 5. HTTP и приятели

Statefmi.rails-bg.net

10:01

/topics

10:02

/tasks

Page 54: 5. HTTP и приятели

Statefmi.rails-bg.net

10:01

/topics

10:02

/tasks

10:03

/topics/5

Page 55: 5. HTTP и приятели

Statefmi.rails-bg.net

10:01

/topics

10:02

/tasks

10:03

/topics/5

10:04

/tasks/1

Page 56: 5. HTTP и приятели

Statelessfmi.rails-bg.net

10:01

/topics

10:02

/tasks

10:03

/topics/5

10:04

/tasks/1

Page 57: 5. HTTP и приятели
Page 58: 5. HTTP и приятели

Cookies

Page 59: 5. HTTP и приятели

Cookies

HTTP/1.1 200 OKContent-Type: text/htmlSet-Cookie: secret=ndrznzvr

Page 60: 5. HTTP и приятели

Cookies

HTTP/1.1 200 OKContent-Type: text/htmlSet-Cookie: secret=ndrznzvr

Page 61: 5. HTTP и приятели

Cookies

HTTP/1.1 200 OKContent-Type: text/htmlSet-Cookie: secret=ndrznzvr

GET /baba HTTP/1.1Host: fmi.rails-bg.netCookie: secret=ndrznzvr

Page 62: 5. HTTP и приятели

Cookies

HTTP/1.1 200 OKContent-Type: text/htmlSet-Cookie: secret=ndrznzvr

GET /baba HTTP/1.1Host: fmi.rails-bg.netCookie: secret=ndrznzvr

Page 63: 5. HTTP и приятели

</http>

Page 64: 5. HTTP и приятели

Content-Type: text/html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML...<html lang='bg' xml:lang='bg'... <head> <title>Програмирани с Ruby и Rails...

Page 65: 5. HTTP и приятели

Content-Type: text/html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML...<html lang='bg' xml:lang='bg'... <head> <title>Програмирани с Ruby и Rails...

HTML

Page 66: 5. HTTP и приятели

Content-Type: text/html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML...<html lang='bg' xml:lang='bg'... <head> <title>Програмирани с Ruby и Rails...

HTMLX

Page 67: 5. HTTP и приятели

Цел:

съдържание на страницата(не изгледа, не поведението)

Page 68: 5. HTTP и приятели

Markup = Маркиране ± език

Page 69: 5. HTTP и приятели

Markup = Маркиране ± език

<чушка цвят="жълт">

Page 70: 5. HTTP и приятели

Markup = Маркиране ± език

<чушка цвят="жълт">

</чушка>

Page 71: 5. HTTP и приятели

Markup = Маркиране ± език

<чушка цвят="жълт">

</чушка>

Page 72: 5. HTTP и приятели

Смисъл, структура

Page 73: 5. HTTP и приятели

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html> <head> ? </head> <body> ? </body></html>

Page 74: 5. HTTP и приятели

<head> <title>Моето любимо коте</title> <meta name=”generator” content=”моите две ръце” /></head>

Page 75: 5. HTTP и приятели

<body> <h1>Моето коте &mdash; Кънчо</h1> <p>Здрасти, това е страницата, поветена на моето любимо коте. Тук ще намерите много информация, снимки и връзки за него.</p> <ul class="menu"> <li><a href="/bio">Биография на Кънчо</a></li> <li><a href="/photos">Снимки</a></li> </ul> <img src="/kuncho_best.jpg" alt="Кънчо -- най-красив"/></body>

Page 76: 5. HTTP и приятели

Is YOUR HTML valid?http://validator.w3.org/http://www.w3.org/TR/html401/ http://www.w3.org/TR/xhtml1/

Page 77: 5. HTTP и приятели

Сам е скучно, искам в група

Сам е скучно

Page 78: 5. HTTP и приятели

И таговете са по-добре с компания

Page 79: 5. HTTP и приятели

<div> каквито си искате тагове</div>

<span> почти каквито искате</span>

Page 80: 5. HTTP и приятели

Кой съм аз и за какво се боря? Как да ме намериш?

Page 81: 5. HTTP и приятели

Разпознаване<div id="footer"><ul class="menu">

<div class="menu reply">

атрибути за всички тагове

Page 82: 5. HTTP и приятели
Page 83: 5. HTTP и приятели

Формуляри<form action="/topics" method="post">

<label for="fullname">Full name</label> <input name="fullname" id="fullname" type="text" />

<input name="tick" type="checkbox" checked="checked" />

<textarea name="freetext">Feed me!</textarea>

<select name="project"> <option value="easy">The hard one</option> <option value="hard" selected="selected">The easy one</option> </select> <input type="submit" value="Run, Lola">

</form>

Page 84: 5. HTTP и приятели

За някои е важно всичко да е красиво

Page 85: 5. HTTP и приятели

Дори отвътре да е развалено

Page 86: 5. HTTP и приятели

Красота ⊂ HTML + CSSВ този курс ще се интересуваме от вътрешната красота, но ако все пак ви интересува

Page 87: 5. HTTP и приятели

<h1>,<h2><strong><em>

Стандартен изглед на някои HTML тагове

•<li></li><a>

<p>

<div>,<p>,<form>скутийкаиновредоколотях<a>,<span>,<strong>,<img>единследдруг

Page 88: 5. HTTP и приятели

CSSCascading Style Sheets

http://www.w3.org/Style/CSS/

http://w3schools.com/css/

http://jigsaw.w3.org/css-validator/

Page 89: 5. HTTP и приятели
Page 90: 5. HTTP и приятели

Как си пазим съдържанието, което трябва да структурираме в

HTML?

Page 91: 5. HTTP и приятели

Опитвали сте се сами да мислите файлови формати и интерфейс за достъп до данните си?

Page 92: 5. HTTP и приятели

Релационен модел

Page 93: 5. HTTP и приятели

Коткирелация ≈ таблица

Page 94: 5. HTTP и приятели

ID Име Порода

1 Macorana3f Сомалийска

2 Стрептокок Сиамска

3 Шрапнел Сомалийска

4 Рекса Мейн Куун

Коткирелация ≈ таблица

Page 95: 5. HTTP и приятели

ID Име Порода

1 Macorana3f Сомалийска

2 Стрептокок Сиамска

3 Шрапнел Сомалийска

4 Рекса Мейн Куун

Първичен ключ/PK

Коткирелация ≈ таблица

Page 96: 5. HTTP и приятели

ID Име Порода

1 Macorana3f Сомалийска

2 Стрептокок Сиамска

3 Шрапнел Сомалийска

4 Рекса Мейн Куун

Първичен ключ/PK

Коткирелация ≈ таблица

Запис/ред

Page 97: 5. HTTP и приятели

Нормализация≈

липса на повторения на данни

Пак далеч от теорията

Page 98: 5. HTTP и приятели
Page 99: 5. HTTP и приятели

ID Име Порода

1 Macorana3f Сомалийска

2 Стрептокок Сиамска

3 Шрапнел Сомалийска

4 Рекса Мейн Куун

Page 100: 5. HTTP и приятели

Породи

Котки

Page 101: 5. HTTP и приятели

Породи

КоткиID Име ID на Порода

1 Macorana3f 22 Стрептокок 13 Шрапнел 24 Рекса 3

Page 102: 5. HTTP и приятели

Породи

Котки

ID Порода1 Сиамска2 Сомалийска3 Мейн Куун

ID Име ID на Порода

1 Macorana3f 22 Стрептокок 13 Шрапнел 24 Рекса 3

Page 103: 5. HTTP и приятели

Породи

Котки

ID Порода1 Сиамска2 Сомалийска3 Мейн Куун

ID Име ID на Порода

1 Macorana3f 22 Стрептокок 13 Шрапнел 24 Рекса 3

Котка към Порода, много към едно

Page 104: 5. HTTP и приятели

Породи

Котки

ID Порода1 Сиамска2 Сомалийска3 Мейн Куун

ID Име ID на Порода

1 Macorana3f 22 Стрептокок 13 Шрапнел 24 Рекса 3

Котка към Порода, много към едно

От всяка порода може да има много котки, една котка е от една порода

Page 105: 5. HTTP и приятели

Мелези?

Page 106: 5. HTTP и приятели
Page 107: 5. HTTP и приятели

Котка към Порода, много към много

Page 108: 5. HTTP и приятели

Котка към Порода, много към много

От всяка порода може да има много котки, една котка може да е от много породи

Page 109: 5. HTTP и приятели

Котка към Порода, много към много

От всяка порода може да има много котки, една котка може да е от много породи

КоткиID Име

1 Macorana3f

2 Стрептокок

3 Шрапнел

4 Рекса

Page 110: 5. HTTP и приятели

Котка към Порода, много към много

От всяка порода може да има много котки, една котка може да е от много породи

КоткиID Име

1 Macorana3f

2 Стрептокок

3 Шрапнел

4 Рекса

Породи

ID Порода

1 Сиамска

2 Сомалийска

3 Мейн Куун

Page 111: 5. HTTP и приятели

Котка към Порода, много към много

От всяка порода може да има много котки, една котка може да е от много породи

КоткиID Име

1 Macorana3f

2 Стрептокок

3 Шрапнел

4 Рекса

Породи

ID Порода

1 Сиамска

2 Сомалийска

3 Мейн Куун

Котки към породи

IDID на котка

ID на порода

1 1 12 1 23 2 14 3 25 4 4

Page 112: 5. HTTP и приятели
Page 113: 5. HTTP и приятели

SQLStructured Query Language

Page 114: 5. HTTP и приятели

SELECT * FROM kittens

SELECT * FROM kittens WHERE age < 2

SELECT id, name FROM kittens WHERE name LIKE ‘Brr%’

Page 115: 5. HTTP и приятели

UPDATE kittens SET age = age +1 WHERE name = ‘Birthday Kitten’

Page 116: 5. HTTP и приятели

INSERT INTO kittens (id, name, age) VALUES (7, ‘Pinko’, 1)

INSERT INTO kittens (name) VALUES (‘Pinko’)

Page 117: 5. HTTP и приятели

NULL

NULL

Page 118: 5. HTTP и приятели

SELECT NULL + 2 →NULL

Page 119: 5. HTTP и приятели

Задача: име и порода за всяка котка?

Заявка върху повече от една таблица?

Page 120: 5. HTTP и приятели

ID Име ID на Порода

1 Macorana3f 2

2 Стрептокок 1

3 Шрапнел 2

4 Рекса 3

Задача: име и порода за всяка котка?

Заявка върху повече от една таблица?

Page 121: 5. HTTP и приятели

ID Име ID на Порода

1 Macorana3f 2

2 Стрептокок 1

3 Шрапнел 2

4 Рекса 3

ID Порода1 Сиамска2 Сомалийска3 Мейн Куун

Задача: име и порода за всяка котка?

Заявка върху повече от една таблица?

Page 122: 5. HTTP и приятели

JOINдекартово произведение на две таблици

Page 123: 5. HTTP и приятели

JOINдекартово произведение на две таблици

ID на котка Име ID на Порода ID на порода Порода

1 Macorana3f 2 1 Сиамска2 Стрептокок 1 2 Сомалийска3 Шрапнел 2 3 Мейн Куун4 Рекса 3 1 Сиамска1 Macorana3f 2 2 Сомалийска2 Стрептокок 1 3 Мейн Куун3 Шрапнел 2 1 Сиамска4 Рекса 3 2 Сомалийска1 Macorana3f 2 3 Мейн Куун2 Стрептокок 1 1 Сиамска3 Шрапнел 2 2 Сомалийска4 Рекса 3 3 Мейн Куун

Page 124: 5. HTTP и приятели

When a bike is stolen,a fairy dies