Skip to content

MarketTwits/Client-Server_MobilLection

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

Client-Server_MobilLection

Клиент-серверное взаимодействие

Варианты взаимодействия:

  • Клиент-сервер (сервер один, клиентов много)
  • Одноранговая (peer-to-peer) сеть

HTTP

Самым популярным протоколом передачи данных между клиентом и сервером (и наоборот) является http. Основой http является технология "клиент-сервер", т.е. предпалагается существоване:

  • Потребителей(клиентов), которые иницируют соединение и посылают запрос;

  • Поставщиков(серверов), которые ожидают соединения для получения запроса, производят необходимые действия и возвращают обратно с результатом

    Структура протокола

  1. Стартовая строка - определяет тип сообщения
  2. Заголовки (Headers) - харахтеризуют тело сообщения, параметры передачи
  3. Тело сообщения( Message Body) - данные сообщения. Отделены от заголовка пустой строкой. Могут отсутвовать

Стартовая строка запроса:
Метод URI HTTP/Version

GET /wiki/HTTP HTTP/1.0
Host: ru.wikipedia.org

Стартовая строка ответа от сервера:
HTTP/Version Code Status Description

HTTP/1.0.200 OK

Заголовки
Заголовик HTTP - это строки в http сообщении, содержащие разделённую двоеточием пару параметр-значение. Формат заголовков соответсвует общему фомрату заголовков текствовых сетевых сообщений ARPA(см RFC 822). Заголовки должны отделяться от тела сообщений хотя бы одной пустой строкой
Пример:

Server Apache/2.2.11 (Win32) PHP/5.3.0
Last-Modified: Sat, 16 Jan 2010 21:16:42 GMT
Content-Type: text/plain; charset=windows-1251 Content-Language: ru

Типы заголовков:
1.General Headers-могут включаться в любое сообщение клиента и сервера;
2.Request Headers-используются только в запросах клиента;
3.Response Headers-только для ответов от сервера;
4.Entity Headers-сопровождают каждую сущность сообщения

Тело сообщения
message-body = entity-body
<entity-body закодированное слово
Transfer_Encoding>

Пример запроса на сервер:

GET wiki/страница/HTTP/1.1
Host: ru.wikipedia.org
User-Agent:Mozila/5.0 (X11;U;Linux i 686; ru; rv:1.9b5) Gecko/2008050509 Firefox/3.05b5
Accept : text/html
Connection: close
(Пустая строка)
_

Пример ответа клиенту:

HTTP/1.1 200 OK
Date:Web,11 Feb 2009 11:20:59 GMT
Content-Language: ru
Content-Type: text/html; charset=utf-8
Content-Length: 1234
Connection: close
(пустая строка)
(запрошенная страница в html)

Методы

GET-запрос содержимого
GET /path/resource?param1=value1&param2=value2 HTTP/1.1 POST-отправка сущностей к определенному ресурсу.Может вызывать изменение состояния.
PUT-заменяет все текущие представления ресурса данными запроса.
PATCH-аналогичен PUT, но может работать с частичным изменением.
DELETE-удаление

Коды состояния

1xx: Informational (информационные):
100 Continue («продолжай»);
101 Switching Protocols («переключение протоколов»)
;

2xx: Success (успешно):
200 OK («хорошо»);
201 Created («создано»);
202 Accepted («принято»)
;

3xx: Redirection (перенаправление):
300 Multiple Choices («множество выборов»;
301 Moved Permanently («перемещено навсегда»)
;

4xx: Client Error (ошибка клиента):
400 Bad Request («неправильный, некорректный запрос»);
404 Not Found («не найдено»)
;

5xx: Server Error (ошибка сервера):
500 Internal Server Error («внутренняя ошибка сервера»;
501 Not Implemented («не реализовано»);
502 Bad Gateway («плохой, ошибочный шлюз»)
;

Взаимодействие с сервером

Rest (Respresentational State Transfer)-архитектурный стиль взаимодействия компонентов
распределенного приложения в сеть по модели клиент-сервер

Особенности Rest

  • Каждая сущность должна иметь уникальный идентификатор-URI
  • Сущности должны быть связаны между собой
  • Для чтения и изменения данных должны использоваться стандартные методы
  • Должна быть поддержка нескольких типов ресурсов
  • Взаимодействие должно осуществляться без состояние

Строго заданный формат URI GET /book/ - получить список всех книг GET /book3/ - получить книгу номер 3 POST /book/ - добавить книгу (данные в теле запроса) PUT /book/3 - изменить книгу(данные в теле запроса) DELETE /book/3 - удалить книгу

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published