Использование Web сервисов. (Глава 13)

Содержание

Слайд 2

Данные в Web С распространением и широкой поддержкой протокола HTTP Запрос/Ответ,

Данные в Web

С распространением и широкой поддержкой протокола HTTP Запрос/Ответ, появилось

естественное стремление обмениваться данными между программами, используя эти протоколы
Поэтому необходимо было придумать и согласовать способ представления данных, передаваемых по сети между приложениями
Существует два широко распространённых формата: XML и JSON
Слайд 3

Отправка данных через “Сеть” Словарь Python Java HashMap a.k.a. “Wire Protocol” – что посылают “по проводам”

Отправка данных через “Сеть”

Словарь Python

Java
HashMap

a.k.a. “Wire Protocol” – что посылают “по

проводам”
Слайд 4

Соглашение о протоколе связи Словарь Python Java HashMap Сериализация Chuck 303 4456 Десериализация XML

Соглашение о протоколе связи

Словарь Python

Java
HashMap

Сериализация



Chuck


303 4456



Десериализация

XML

Слайд 5

Соглашение о протоколе связи Словарь Python Java HashMap { "name" :

Соглашение о протоколе связи

Словарь Python

Java
HashMap

{
"name" :
"Chuck",
"phone" :


"303-4456"
}

JSON

Сериализация

Десериализация

Слайд 6

Элементы (или вершины) XML Простой элемент Составной элемент Chuck 303 4456 Noah 622 7421

Элементы (или вершины) XML

Простой элемент
Составной элемент



Chuck
303 4456


Noah
622 7421


Слайд 7

XML Разметка данных для передачи через сеть... http://en.wikipedia.org/wiki/XML

XML

Разметка данных для передачи через сеть...

http://en.wikipedia.org/wiki/XML

Слайд 8

eXtensible Markup Language (Расширяемый язык разметки) Основная цель – помочь информационным

eXtensible Markup Language (Расширяемый язык разметки)

Основная цель – помочь информационным системам делиться

структурированными данными
Создавался как упрощённое подмножество стандартного обобщённого языка разметки (Standard Generalized Markup Language), и проектировался, чтобы быть относительно легко понятным для человека

http://en.wikipedia.org/wiki/XML

Слайд 9

Основы XML Тег начала Тег конца Текстовое содержание Атрибут Самозакрывающийся тег Chuck +1 734 303 4456

Основы XML

Тег начала
Тег конца
Текстовое содержание
Атрибут
Самозакрывающийся тег


Chuck

+1 734

303 4456



Слайд 10

Пробелы Chuck +1 734 303 4456 Chuck +1 734 303 4456

Пробелы


Chuck

+1 734 303 4456

/>


Chuck
+1 734 303 4456


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

Слайд 11

Пример XML... http://en.wikipedia.org/wiki/XML

Пример XML...

http://en.wikipedia.org/wiki/XML

Слайд 12

Терминология XML Теги показывают начало и конец элементов Атрибуты – пары

Терминология XML

Теги показывают начало и конец элементов
Атрибуты – пары ключ/значение в

открывающемся теге XML
Сериализация / Десериализация – преобразование данных конкретной программы в общепринятый формат, который можно хранить и/или передавать между системами независимо от используемого языка программирования

http://en.wikipedia.org/wiki/Serialization

Слайд 13

XML как дерево X Y Z Элементы Текст

XML как дерево


X

Y
Z


Элементы

Текст

Слайд 14

Текст и атрибуты XML X Y Z a b c X

Текст и атрибуты XML


X

Y

Z


a

b

c

X

d

e

Y

Z

5

атрибут w

текстовая вершина

Элементы

Текст

Слайд 15

XML как пути X Y Z /a/b X /a/c/d Y /a/c/e Z Элементы Текст

XML как пути


X

Y
Z


/a/b X
/a/c/d Y
/a/c/e

Z

Элементы

Текст

Слайд 16

XML Schema Описание “соглашения” о том, что является допустимым XML. http://en.wikipedia.org/wiki/Xml_schema http://en.wikibooks.org/wiki/XML_Schema

XML Schema

Описание “соглашения” о том, что является допустимым XML.

http://en.wikipedia.org/wiki/Xml_schema

http://en.wikibooks.org/wiki/XML_Schema

Слайд 17

XML Schema Описание допустимого формата документа XML Выражается в ограничениях на

XML Schema

Описание допустимого формата документа XML
Выражается в ограничениях на структуру и

содержание документа
Часто используется для указания “соглашения” между системами - “Моя система будет принимать только XML соответствующие определённой схеме.”
Если определённый XML удовлетворяет требованиям схемы, он называется “валидным”

http://en.wikipedia.org/wiki/Xml_schema

Слайд 18

Валидатор Соглашение XML Schema Документ XML Валидация XML

Валидатор

Соглашение
XML Schema

Документ XML

Валидация XML

Слайд 19

Валидатор Severance 17 2001-04-17 Соглашение XML Schema Документ XML Валидация XML

Валидатор


Severance
17
2001-04-17




type="xs:integer"/>



Соглашение
XML Schema

Документ
XML

Валидация XML

Слайд 20

Множество языков XML Schema Document Type Definition (DTD) https://ru.wikipedia.org/wiki/DTD Standard Generalized

Множество языков XML Schema

Document Type Definition (DTD)
https://ru.wikipedia.org/wiki/DTD
Standard Generalized Markup Language (ISO

8879:1986 SGML)
https://ru.wikipedia.org/wiki/SGML
XML Schema from W3C - (XSD)
https://ru.wikipedia.org/wiki/XML_Schema

http://en.wikipedia.org/wiki/Xml_schema

Слайд 21

XSD XML Schema (спецификация W3C) Мы сфокусируемся на версии World Wide

XSD XML Schema (спецификация W3C)

Мы сфокусируемся на версии World Wide Web

Consortium (W3C)
Её часто называют “W3C Schema”
Более широко она известна как XSD, поскольку файлы имеют расширение .xsd

http://www.w3.org/XML/Schema

http://en.wikipedia.org/wiki/XML_Schema_(W3C)

Слайд 22

Структура XSD xs:element - элемент xs:sequence - последовательнсть xs:complexType – составной элемент Severance 17 2001-04-17

Структура XSD

xs:element - элемент
xs:sequence - последовательнсть
xs:complexType – составной элемент









Severance
17
2001-04-17

Слайд 23

Ограничения XSD http://www.w3schools.com/Schema/schema_complex_indicators.asp minOccurs="1" maxOccurs="1" /> minOccurs="0" maxOccurs="10" /> Tove Refsnes Hege Stale Jim Borge

Ограничения XSD

http://www.w3schools.com/Schema/schema_complex_indicators.asp




minOccurs="1" maxOccurs="1"

/>
minOccurs="0" maxOccurs="10" />




Tove Refsnes
Hege
Stale
Jim
Borge

Слайд 24

Типы данныхXSD http://www.w3schools.com/Schema/schema_dtypes_numeric.asp John Smith 2002-09-24 2002-05-30T09:30:10Z 999.50 30 Обычно время

Типы данныхXSD

http://www.w3schools.com/Schema/schema_dtypes_numeric.asp





type="xs:integer"/>

John Smith
2002-09-24
2002-05-30T09:30:10Z
999.50
30

Обычно время представляют в формате UTC/GMT, поскольку сервера часто разбросаны по всему миру.

Слайд 25

Формат дат и времени ISO 8601 2002-05-30T09:30:10Z Год-месяц-день Время суток Часовой

Формат дат и времени ISO 8601

2002-05-30T09:30:10Z

Год-месяц-день

Время суток

Часовой пояс – обычно указывается

в UTC / GMT

http://en.wikipedia.org/wiki/ISO_8601

http://en.wikipedia.org/wiki/Coordinated_Universal_Time

Слайд 26

Слайд 27

http://www.w3schools.com/Schema/schema_example.asp

http://www.w3schools.com/Schema/schema_example.asp

Слайд 28

import xml.etree.ElementTree as ET data = ''' Chuck +1 734 303

import xml.etree.ElementTree as ET
data = '''
Chuck

+1 734

303 4456


'''
tree = ET.fromstring(data)
print 'Name:',tree.find('name').text
print 'Attr:',tree.find('email').get('hide')

xml1.py

Слайд 29

import xml.etree.ElementTree as ET input = ''' 001 Chuck 009 Brent

import xml.etree.ElementTree as ET
input = '''


001
Chuck



009
Brent


'''
stuff = ET.fromstring(input)
lst = stuff.findall('users/user')
print 'User count:', len(lst)
for item in lst:
print 'Name', item.find('name').text
print 'Id', item.find('id').text
print 'Attribute', item.get("x")

xml2.py

Слайд 30

JavaScript Object Notation

JavaScript Object Notation

Слайд 31

JavaScript Object Notation Дуглас Крокфорд - “открыл” JSON Нотация литералов объектов в JavaScript http://www.youtube.com/watch?v=kc8BAR7SHJI

JavaScript Object Notation

Дуглас Крокфорд - “открыл” JSON
Нотация литералов объектов в JavaScript

http://www.youtube.com/watch?v=kc8BAR7SHJI

Слайд 32

Слайд 33

Слайд 34

import json data = '''{ "name" : "Chuck", "phone" : {

import json
data = '''{
"name" : "Chuck",
"phone" : {
"type"

: "intl",
"number" : "+1 734 303 4456"
},
"email" : {
"hide" : "yes"
}
}'''
info = json.loads(data)
print 'Name:',info["name"]
print 'Hide:',info["email"]["hide"]

json1.py

JSON представляет данные в виде вложенных “списков” и “словарей”

Слайд 35

import json input = '''[ { "id" : "001", "x" :

import json
input = '''[
{ "id" : "001",
"x" : "2",

"name" : "Chuck"
} ,
{ "id" : "009",
"x" : "7",
"name" : "Chuck"
}
]'''
info = json.loads(input)
print 'User count:', len(info)
for item in info:
print 'Name', item['name']
print 'Id', item['id']
print 'Attribute', item['x']

json2.py

JSON представляет данные в виде вложенных “списков” и “словарей”