View
18
Download
0
Category
Preview:
DESCRIPTION
Government Data Integration. หลักสูตรเบื้องต้น REST. songrit@gmail.com 083-788-7769. วัตถุประสงค์. เข้าใจสถาปัตยกรรม SOA เข้าใจ Web Services การอ่านข้อมูลจากหน้าเว็บ พัฒนา Web Services แบบ REST. REST Representational State Transfer. API Directory. - PowerPoint PPT Presentation
Citation preview
วั�ตถุ�ประสงค์�
• เข้�าใจสถุาป�ตยกรรม SOA
• เข้�าใจ Web Services
• การอ่�านข้�อ่ม�ลจากหน�าเวั�บ• พั�ฒนา Web Services แบบ REST
2
API Directory
• http://www.programmableweb.com/apis/directory
• http://www.webmashup.com
• http://www.webapi.org/
• http://www.webservicelist.com/
4
CSS
<html>
<head><title>gdi</title></head>
<body>
<div style="color:red;">Hello, world</div>
</body>
</html>
8
JavaScript
<html>
<head><title>gdi</title></head>
<body>
<div onClick="alert('you click');">Hello, world</div>
</body>
</html>
9
def test_nokogiri
require 'nokogiri'
require 'open-uri'
doc = Nokogiri::HTML(open('http://www.google.com/search?q=ruby'))
t=[]
doc.css('a.l').each do |link|
t << "<b>#{link.content}</b> #{link['href']}"
end
render :text => t.join("<br/>")
end
11
• http://scrubyt.org/
• sudo gem install scrubyt
• sudo gem install firewatir
12
Googlerequire 'rubygems'
require 'scrubyt'
google_data = Scrubyt::Extractor.define do
fetch 'http://www.google.com/search?hl=en&q=ruby'
link_title "//a[@class='l']", :write_text => true do
link_url
end
end
p google_data.to_hash
13
Ebayebay_data = Scrubyt::Extractor.define do
fetch 'http://www.ebay.com/‘
fill_textfield 'satitle', 'ipod‘
submit ; click_link 'Apple iPod‘
record do item_name 'APPLE NEW IPOD MINI 6GB MP3 PLAYER SILVER‘
price '$71.99‘
end
next_page 'Next >', :limit => 5
end
14
ScRUBYt Installation
• sudo gem install hpricot
• sudo gem install mechanize
• sudo gem install scrubyt
15
Lab: ตลาดหล�กทร�พัย�แห�งประเทศไทย
• http://marketdata.set.or.th/mkt/stockquotation.do?symbol=pttep
16
Lab: Twitter
• สร�างเวั�บเซอ่ร�วั(สท)*ร �บชื่,*อ่ผู้��ใชื่� Twitter แล�วัส�งข้�อ่ม�ลอ่อ่กในร�ปแบบ XML
• ชื่,*อ่• ท)*อ่ย��• เวั�บไซท�• ประวั�ต(• ทดสอ่บก�บชื่,*อ่เหล�าน). songrit, iamnadia,
algore, BarackObama17
ActiveRecord#to_xml
• print Book.first.to_xml• :only=>[...]• :skip_instruct=>true• :root=>'books'• :indent=>4• :dasherize=>false• :skip_types=>true• :include=>chapters
19
Labx = <<-EOT
<export>
<mineral>20_000</mineral>
<electronic>300_000</electronic>
<fishery>50_000</fishery>
</export>
EOT
Hash.from_xml(x)22
Builderxml.instruct!
xml.comment! "a comment"
xml.feed "xmlns" => "http://www.w3.org/2005/Atom" do
xml.title "My Atom Feed"
xml.subtitle h(@feed.subtitle), "type" => 'html'
xml.link url_for( :only_path => false, :controller => 'feed', :action => 'atom' )
xml.updated @updated.iso8601
@entries.each do |entry|
xml.entry do
xml.title entry.title
xml.link "href" => url_for ( :only_path => false, :controller => 'entries', :action => 'show', :id => entry )
xml.id entry.urn
xml.updated entry.updated.iso8601
xml.summary h(entry.summary)
end
end
end
23
Controllerclass CodeController < ApplicationController
def yahootest
query = CGI.escape("SEARCH TEXT")
yahookey = "songrit_gdi"
url = "http://api.search.yahoo.com/" +
"WebSearchService/V1/webSearch?" +
"appid=#{yahookey}&query=#{query}" +
"&results=3&start=1"
result = Net::HTTP.get(URI(url))
@doc = REXML::Document.new result
end
end
27
View
<% @doc.root.each_element do |res| %>
<b>Title:</b> <%= res[0].text.to_s %><br>
<b>Summary:</b> <%= res[1].text.to_s %><br>
<b>Link:</b> <a href="<%= res[2].text.to_s %>"><%= res[2].text.to_s % />
<br><br>
<% end %>
28
Lab
• http://sites.google.com/site/songrit/Home/my-files/rexml_lab.xml
29
Lab: create new REXML::Document
require "rexml/document“
file = File.new( "rexml_lab.xml" )
doc = REXML::Document.new file
30
Accessing Elementsdoc.elements.each("inventory/section") { |element|
puts element.attributes["name"]
}
31
root = doc.root
puts root.attributes["title"]
puts root.elements["section/item[@stock='44']"].attributes["upc"]
32
Google Maps
• ruby script/plugin install git://github.com/joergbattermann/gmaps_on_rails.git
• signup at http://www.google.com/apis/maps/signup.html
33
environment.rb
• localhost:3000
• GOOGLE_APPLICATION_ID = "ABQIAAAA3HdfrnxFAPWyY-aiJUxmqRTJQa0g3IQ9GZqIMmInSLzwtGDKaBQ0KYLwBEKSM7F9gCevcsIf6WPuIQ"
34
View<% map = GoogleMap.new
map.markers << GoogleMapMarker.new(
:map => map, :lat => 47.6597,
:lng => -122.318, :html => 'My House') %>
<%= map.to_html %>
<div style="width: 500px; height: 500px;"> <%= map.div %> </div>
35
Google Map V3
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false">
</script>
37
<script type="text/javascript">
function initialize() {
var latLng = new google.maps.LatLng(14, 100);
var map = new google.maps.Map(document.getElementById('mapCanvas'), {
zoom: 8,
center: latLng,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
38
var marker = new google.maps.Marker({
position: latLng,
title: 'Point A',
map: map,
draggable: true
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
39
Lab
• get data from http://www.fedspending.org/apidoc.php
• display top 10 contractors and amount for state of California
42
Recommended