Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SUIK.docx
Скачиваний:
20
Добавлен:
10.02.2015
Размер:
111.64 Кб
Скачать
  1. Протокол передачи гипертекста. Запросы POST, GET, HEAD.

Internet построен по многоуровневому принципу, от физического уровня, связанного с физическими аспектами передачи двоичной информации, и до прикладного уровня, обеспечивающего интерфейс между пользователем и сетью.

HTTP (HyperText Transfer Protocol, протокол передачи гипертекста ) – это протокол прикладного уровня, разработанный для обмена гипертекстовой информацией в Internet.

HTTP предоставляет набор методов для указания целей запроса, отправляемого серверу. Эти методы основаны на дисциплине ссылок, где для указания ресурса, к которому должен быть применен данный метод, используется универсальный идентификатор ресурсов (Universal Resource Identifier) в виде местонахождения ресурса (Universal Resource Locator, URL ) или в виде его универсального имени (Universal Resource Name, URN ).

HTTP используется для коммуникаций между различными пользовательскими программами и программами-шлюзами, предоставляющими доступ к существующим Internet-протоколам, таким как SMTP (протокол электронной почты), NNTP (протокол передачи новостей), FTP (протокол передачи файлов), Gopher и WAIS. HTTP разработан для того, чтобы позволять таким шлюзам через промежуточные программы- серверы (proxy) передавать данные без потерь.

Протокол реализует принцип запрос/ответ. Запрашивающая программа– клиент инициирует взаимодействие с отвечающей программой– сервером, и посылает запрос, содержащий:

  • метод доступа;

  • адрес URL;

  • версию протокола;

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

Ответ сервера содержит:

  • строку состояния, в которую входит версия протокола и код возврата (успех или ошибка);

  • сообщение (в форме, похожей на MIME), в которое входит информация сервера, метаинформация (т.е. информация о содержании сообщения) и тело сообщения.

В протоколе не указывается, кто должен открывать и закрывать соединение между клиентом и сервером. На практике соединение, как правило, открывает клиент, а сервер после отправки ответа инициирует его разрыв.

По умолчанию, протокол HTTP использует порт 80.

Клиент отсылает серверу запрос в одной из двух форм: в полной или сокращенной. Запрос в первой форме называется соответственно полным запросом, а во второй форме – простым запросом.

Простой запрос содержит метод доступа и адрес ресурса. Формально это можно записать так:

<Простой-Запрос> := <Метод> <символ пробел>

<Запрашиваемый-URL> <символ новой строки>

В качестве метода могут быть указаны GET , POST , HEAD , PUT, DELETE и другие.

Пример простого запроса:

GET http://phpbook.info/

GET – передача небольшой информации, запрос данных по идентификатору ресурса;

POST – изменять данные на сервере;

HEAD – вывести список методов (не возвращает документ);

PUT – загрузка информации на сервер;

DELETE

  1. Интерфейс программирования приложений (api). Drupal Database api, Forms api.

Интерфейс программирования приложений — набор готовых классов, процедур, функций, структур и констант, предоставляемых приложением (библиотекой, сервисом) для использования во внешних программных продуктах. Используется программистами для написания всевозможных приложений.

API определяет функциональность, которую предоставляет программа (модуль, библиотека), при этом API позволяет абстрагироваться от того, как именно эта функциональность реализована.

Если программу (модуль, библиотеку) рассматривать как чёрный ящик, то API — это множество «ручек», которые доступны пользователю данного ящика, и которые он может вертеть и дёргать.

Программные компоненты взаимодействуют друг с другом посредством API. При этом обычно компоненты образуют иерархию — высокоуровневые компоненты используют API низкоуровневых компонентов, а те, в свою очередь, используют API ещё более низкоуровневых компонентов.

По такому принципу построены протоколы передачи данных по Интернет. Стандартный стек протоколов (сетевая модель OSI) содержит 7 уровней (от физического уровня передачи бит до уровня протоколов приложений, подобных протоколам HTTP и IMAP). Каждый уровень пользуется функциональностью предыдущего уровня передачи данных и, в свою очередь, предоставляет нужную функциональность следующему уровню.

Важно заметить, что понятие протокола близко по смыслу к понятию API. И то, и другое является абстракцией функциональности, только в первом случае речь идёт о передаче данных, а во втором — о взаимодействии приложений.

API библиотеки функций и классов включает в себя описание сигнатур и семантики функций.

Сигнатура функции

Сигнатура функции — часть общего объявления функции, позволяющая средствам трансляции идентифицировать функцию среди других. В различных языках программирования существуют разные представления о сигнатуре функции, что также тесно связано с возможностями перегрузки функций в этих языках.

Иногда различают сигнатуру вызова и сигнатуру реализации функции. Сигнатура вызова обычно составляется по синтаксической конструкции вызова функции с учётом сигнатуры области видимости данной функции, имени функции, последовательности фактических типов аргументов в вызове и типе результата. В сигнатуре реализации обычно участвуют некоторые элементы из синтаксической конструкции объявления функции: спецификатор области видимости функции, её имя и последовательность формальных типов аргументов.

Например, в языке программирования C++ простая функция однозначно опознаётся компилятором по её имени и последовательности типов её аргументов, что составляет сигнатуру функции в этом языке. Если функция является методом некоторого класса, то в сигнатуре будет участвовать и имя класса.

В языке программирования Java сигнатуру метода составляет его имя и последовательность типов параметров; тип значения в сигнатуре не участвует.

Семантика функции

Семантика функции — это описание того, что данная функция делает. Семантика функции включает в себя описание того, что является результатом вычисления функции, как и от чего этот результат зависит. Обычно результат выполнения зависит только от значений аргументов функции, но в некоторых модулях есть понятие состояния. Тогда результат функции может зависеть от этого состояния, и, кроме того, результатом может стать изменение состояния. Логика этих зависимостей и изменений относится к семантике функции. Полным описанием семантики функций является исполняемый код функции или математическое определение функции.

Database API предоставляет стандартизированный, независимый от конкретной базы данных, уровень абстракции.

Статические запросы

● Статическим может быть только запрос SELECT.

● Статические запросы реализуются вызовом функции query() или db_query() со строковым аргументом, практически аналогичным соответствующему SQL синтаксису.

$result = $conn->query(“SELECT nid, title FROM {node}”);

$result = db_query("SELECT nid, title FROM {node}");

Последняя запись эквивалентна следующей:

$result = Database::getConnection()->query("SELECT nid, title

FROM {node}");

$result = db_query("SELECT nid, title FROM {node} WHERE

created > :created", array(':created' => REQUEST_TIME - 3600,));

● Имена таблиц должны быть заключены в фигурные скобки {}

● Вторым аргументом может быть массив меток-заполнителей:

● Метки-заполнители не должны быть именами таблиц и полей!

● Имена меток-заполнителей должны быть уникальными в пределах одного запроса!

● В метку-заполнитель может подставляться массив:

db_query("SELECT * FROM {node} WHERE nid IN (:nids)",

array(':nids' => array(13, 42, 144));

Динамические запросы

● Динамические запросы строятся в процессе исполнения php кода посредством Database API.

● Запросы типа Insert, Update, Merge должны быть динамическими, а Select – как статическими, так и динамическими.

$result = db_query("SELECT uid, name, status, created, access

FROM {users} u WHERE uid <> 0 LIMIT 50 OFFSET 0");

// Create an object of type SelectQuery

$query = db_select('users', 'u');

// Add extra detail to this query object: a condition, fields and a

range

$query->condition('u.uid', 0, '<>');

$query->fields('u', array('uid', 'name', 'status', 'created','access'));

$query->range(0, 50);

● После построения запроса, его необходимо запустить посредством метода execute()

$result = $query->execute();

foreach ($result as $record) {

// Do something with each $record

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]