哈囉,大家好!
繼昨天利用JSONPlaceholder 的資料seeding database 後,心裡頓時覺得好爽哪!(感謝公司前輩指引了方向)
而被翻爛的書今天想多研究一下parse JSON data 的方法有哪些,因看到公司專案有用HTTParty 的gem,所以先來研究一下各種parsde 的操作方式,那我們就開始啦:
open-uri + open/read IO
(昨天使用的parse 方式)require 'open-uri'
post_data = JSON.parse(open('https://jsonplaceholder.typicode.com/posts').read)
post_data.each do |post|
Post.create(userId: post["userId"], title: post["title"], body: post["body"])
end
net/http
require 'net/http'
url = URI('https://jsonplaceholder.typicode.com/posts')
post_data = JSON.parse(Net::HTTP.get(uri))
rest_client
# 修改Gemfile 或gem install rest-client
# bundle install
# 進console 試試
url = 'https://jsonplaceholder.typicode.com/posts'
post_data = JSON.parse(RestClient.get(url))
httparty
# 修改Gemfile 或gem install httparty
# bundle install
# 進console 試試
url = 'https://jsonplaceholder.typicode.com/posts'
post_data = HTTParty.get(url).parsed_response
以上是幾個常見的Ruby HTTP Clients,意即當在開發 application 時,我們會透過API 和Server 連線以取得要資料,是個為便於工作階段使用以傳送HTTP 各項要求的類別。而我們可以靈活地使用各種HTTP Clients 甚至進一步研究使用其擴充方法。如上面四個Clients 我們便可看到各有優劣,如有些需要更多行codes 才能解開得到需要的response、有些則依賴了更多相依性套件,若再考量其擴充可用的方法,每個專案都會根據需要而有偏好和決定,如可以參考該比較圖:
總之,大家可利用上圖的standard library 內含clients 或第三方套件來選擇parse API data 的工具,並用以快速seeding 資料庫囉~~
那今天的研究就到這邊,謝謝大家~
參考/補充資料:
Microsoft HttpClient 類別說明
Slideshard - Ruby HTTP clients comparison by Hiroshi Nakamura