Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемkek.ksu.ru
1 Выполнили: Фаттахов Ленар, Горюнов Семен.
2 Задача Мы довели нашу программу до полноценного функционирования. Заказчик захотел заняться рассылкой рекламы для покупателей магазина, и попросил сделать возможность получать XML материал с именами клиентов и их электронными адресами
3 Будем проходить от конкретного товара к списку заказов, которые на него ссылаются – а от него уже к конкретному заказу. class Product line_items product = Product.find(some_id) orders = product.orders logger.info(Product #{some_id} has #{orders.count} orders)
4 Установим на приложение REST интерфейс Позволим приложению посылать нам GET запросы, отвечать будем XML документами Сделаем простой формат запроса:
5 Создаем новый контроллер info для управления информационными запросами, сюда включим действие who_bought: Теперь создадим шаблон, который вернет XML-документ. Мы не будем использовать rhtml шаблон, который использовался для формирования веб-страниц. Взглянем на шаблон who_bought.rxml def = end depot> ruby script/generate controller info
6 Внутри rxml-шаблона создаваемый XML-объект представлен переменной xml. При вызове метода этого объекта (например, при вызове order_list в первой строке нашего шаблона) построитель порождает соответствующий XML-тег. Если одному из этих методов передается хэш,то он используется для создания атрибутов XML-тега. Если передается строка, то она используется в качестве значения тега Если вам нужно получить вложенные теги, передайте блок внешнему вызову метода-построителя. XML- элементы, созданные внутри этого блока, будут вложены внутрь внешнего элемента. В нашем примере мы используем этот механизм, чтобы вставить список тегов внутрь тега, а затем для того, чтобы вставить теги и внутрь каждого тега
7 Этот ruby код использует библиотеку Jim Weirichs Builder, которая генерирует структурированный xml- документ. Мы можем проверить работу этого метода, используя браузер или вызвав метод из командной строки. Если вы введете URL в браузер, будет возвращен XML- документ. В каком виде он будет отображен, зависит от браузера. Можно послать запрос из командной строки: depot> curl xml.order_list(:for product title) do for o xml.order do xml.name(o.name) xml. (o. ) end
8 Соответствующий тип ответа Сначала создадим обыкновенный шаблон для представления HTML. Теперь мы воспользуемся методом respond_to, чтобы взять курс на нужный шаблон в зависимости от Accept-заголовка входящего запроса. Клиенты, купившие
9 Info_controller.rb Проверим командной строкой: depot> curl –H Accept:application/xml \ depot> curl –H Accept:text/html \ Def = orders respond_to do |format| format.html format.xml end
10 Другой способ запроса XML Альтернативный способ – можем указывать желаемый формат в самом URL. Например /info/who_bought/1.xml Для этого подкорректируем файл routes.rb: ActionController::Routing::Routes.draw do |map| map.connect :controller/service.wsdl, :action => wsdl …
11 Вопросы Где используется REST интерфейс? Почему использовали ответ именно в виде XML документа? Что такое Jim Weirichs Builder? Какова тема презентации?
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.