国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Ruby - 在Ruby on Rails中使用Rails Active Resource的教程

在Ruby on Rails中使用Rails Active Resource的教程

2020-04-26 10:39腳本之家 Ruby

這篇文章主要介紹了在Ruby on Rails中使用Rails Active Resource的教程,本文來自于IBM官方網(wǎng)站技術(shù)文檔,需要的朋友可以參考下

簡(jiǎn)介

當(dāng)今的應(yīng)用程序不僅需要和基于瀏覽器的客戶端互操作,還需要和其他應(yīng)用程序互操作。為實(shí)現(xiàn)互操作性,web 應(yīng)用程序通常提供一個(gè) web 服務(wù) API。web 服務(wù) API 通過一個(gè)網(wǎng)絡(luò)(比如 Internet)提供對(duì)應(yīng)用程序 的遠(yuǎn)程訪問。直到最近,web 服務(wù) API 還使用重型、復(fù)雜的基于 SOAP 的 web 服務(wù)集成,這種 web 服務(wù),不僅沒有什么優(yōu)點(diǎn),而且還需要很長時(shí)間才能實(shí)現(xiàn)。帶有基于 Representational State Transfer (REST) 服務(wù)的 Rails 框架有一種更簡(jiǎn)單、更快捷的方法通過 Active Resource 來實(shí)現(xiàn)和使用 web 服務(wù)。

在 Rails 實(shí)現(xiàn)了 RESTful 以后,現(xiàn)在只需通過一個(gè) Rails 動(dòng)作就能提供一個(gè)特定資源的不同內(nèi)容類型(或者表示)。這種方法有以下好處:

  •     一個(gè)資源的各種表示狀態(tài)。
  •     對(duì)不基于瀏覽器的 HTML 客戶端的附加支持在 Controller 視圖中得到了簡(jiǎn)化。
  •     應(yīng)用程序之間以及與新客戶端之間的互操作性。

在本文中,您將了解 REST、SOAP、Rails Active Resource,以及如何提高多個(gè)應(yīng)用程序之間的互操作性。

Ruby on Rails

Ruby on Rails(也稱為 Rails 或 RoR)是一個(gè)用 Ruby 語言編寫的開源 web 應(yīng)用程序框架。Ruby on Rails 旨在幫助開發(fā)人員更輕松快捷地開發(fā)和部署 web 應(yīng)用程序,與其他語言和框架相比,Rails 框架進(jìn)行了幾個(gè)假設(shè)。其目的是使用敏捷開發(fā)的方法,實(shí)現(xiàn)快速開發(fā)。

Rails 框架合并了以下幾個(gè)包:

  •     Active Record:一個(gè)對(duì)象關(guān)系映射層,用于數(shù)據(jù)庫相關(guān)訪問和功能;
  •     Action Pack:一個(gè)控制器和視圖功能管理器;
  •     Action Mailer:一個(gè)電子郵件處理器;
  •     Active Support
  •     Active Resource:提供 web 服務(wù)(即 Action Web 服務(wù))。

Web 服務(wù)

Web 服務(wù)是使用開放協(xié)議通信的應(yīng)用程序組件,它們可以被其他應(yīng)用程序使用。web 服務(wù)是簡(jiǎn)單 APIs ,可以使用 HTML 進(jìn)行訪問,并在承載請(qǐng)求服務(wù)的遠(yuǎn)程系統(tǒng)上執(zhí)行。web 服務(wù)是不同平臺(tái)上、以不同語言編寫、不同系統(tǒng)上的各種應(yīng)用程序的關(guān)鍵集成點(diǎn)。

REST 不是一個(gè)協(xié)議;它是利用 World Wide Web 的技術(shù)和協(xié)議的大型聯(lián)網(wǎng)軟件的一種架構(gòu)風(fēng)格。REST 描述如何定義和處理分布式數(shù)據(jù)對(duì)象(或資源),強(qiáng)調(diào)簡(jiǎn)單的信息交換和可伸縮性。REST 架構(gòu)描述該該架構(gòu)上應(yīng)用的 6 個(gè)約束。

另一方面,SOAP 是一個(gè)協(xié)議規(guī)范,用于在計(jì)算機(jī)網(wǎng)絡(luò)中交換 web 服務(wù)的實(shí)現(xiàn)中的結(jié)構(gòu)化信息。它依賴 XML 作為其消息格式,通常依賴其他應(yīng)用程序?qū)訁f(xié)議(RPC 和 HTTP)進(jìn)行消息協(xié)商和傳輸。SOAP 可以形成 web 服務(wù)協(xié)議堆棧的基礎(chǔ)層,提供用于在其上構(gòu)建 web 服務(wù)的基礎(chǔ)消息傳遞框架。
REST 與 SOAP

下表展示了 REST 和 SOAP 之間的一些區(qū)別。

在Ruby on Rails中使用Rails Active Resource的教程

REST 依賴一個(gè)單一的應(yīng)用程序協(xié)議(HTTP)、幾個(gè) URI、以及幾種通過 XML 標(biāo)準(zhǔn)化的數(shù)據(jù)格式。它采用成熟的 HTTP 方法(比如 GET 和 POST)來指揮應(yīng)用程序。REST 開發(fā)人員使用 URI 來創(chuàng)建一個(gè)公共基礎(chǔ),以便應(yīng)用程序使用 HTTP 和 XML 來共享數(shù)據(jù),而不是為應(yīng)用程序創(chuàng)建一種機(jī)器可讀的標(biāo)準(zhǔn)方法來發(fā)現(xiàn)和使用遠(yuǎn)程系統(tǒng)上的應(yīng)用程序組件(這是 SOAP 用于 web 服務(wù)的方法)。REST 開發(fā)人員使用 XML 文檔而不是應(yīng)用程序方法調(diào)用來告訴分布式程序如何相互使用數(shù)據(jù)。

REST 支持者指出,使用 SOAP 協(xié)議直接訪問遠(yuǎn)程程序的功能必定會(huì)遇到 DCOM 和 Common Object Request Broker Architecture 等之前分布式計(jì)算架構(gòu)所遇到的互操作性問題。

Active Resource

在對(duì) web 應(yīng)用程序在服務(wù)器和客戶機(jī)應(yīng)用程序之間的通信采用 RESTful 方法之前,SOAP 和其他 XML-RPC 形式被用于通過一個(gè) API 進(jìn)行通信。Rails 2 引入的 Active Resource 替代了 Action Web Service。Active Resource 完全理解 RESTful 路由和 XML 表示。它是一個(gè)類,用于將 RESTful 資源映射為 Rails 應(yīng)用程序中的模型。Active Resource 提供一些工具來快速、輕松地使用遵守 Rails RESTful URI 結(jié)構(gòu)和協(xié)議約定的基于 REST 的 web 服務(wù)。Active Resource 將來自任何合格服務(wù)的響應(yīng)映射到富 Ruby 對(duì)象。Active Resource 還提供輕松執(zhí)行基本的 CRUD 功能需要的全部生命周期方法。

CRUD 操作分別對(duì)應(yīng) HTTP 方法 POST、GET、PUT 和 DELETE。而且,Active Resource 對(duì)這些 HTTP 方法中的每個(gè)方法都有一個(gè)方法。它們接收與 CRUD 相同的參數(shù),但返回收到的 XML 的一個(gè)哈希表。Active Resource 對(duì)象本質(zhì)上是 REST web 服務(wù)器的前端。它通過向服務(wù)器回調(diào) HTTP 調(diào)用并將 XML 結(jié)果解析回一個(gè) Ruby 對(duì)象中來獲取并修改它的數(shù)據(jù)。

清單 1 展示了一個(gè)最小 Active Resource 示例。假設(shè)有一個(gè)圖書館應(yīng)用程序,每個(gè)類別作為一個(gè)不同的客戶端,且 Indian History 是其中一個(gè)類別。
清單 1. Active Resource 示例

?
1
2
3
class IndianHistory < ActiveResource::Base
self.site = “http://indian-history.com”
end

ActiveResource 擁有與 Active Record 相同的方法。在上面的代碼樣例中,類 IndianHistory 正繼承自 ActiveResource Base。在第二行中,self.site 持有包含 IndianHistory 圖書的 URI 的站點(diǎn)值。在本例中,這個(gè) URI 是 http://indian-history.com(假設(shè)這個(gè) URI 是帶有必要模型和控制器動(dòng)作的另一個(gè) Rails 應(yīng)用程序)。

現(xiàn)在,這個(gè)類被映射到站點(diǎn)值定位的 RESTful 資源,您現(xiàn)在可以操作 IndianHistory 類的資源。要獲取 Indian History 下的所有圖書列表,您將調(diào)用它的 find 方法,它類似于 Active Record find 方法。

?
1
>> books = IndianHistory.find (:all)

這個(gè) Active Resource 模塊類似于 Active Record 模塊;它們擁有相同的風(fēng)格。

假設(shè)您正在尋找標(biāo)題為 “Akbar” 的圖書,可以使用以下代碼:

?
1
>> books = IndianHistory.find(:all, :params => { :title => “Akbar”}}

與 Active Record find 方法中的常規(guī) :conditions 子句不同,本示例使用了 :params,且 URL 是 GET http://indian-history.com/indian_histories.xml?title=Akbar。

Active Resource 不僅限于檢索數(shù)據(jù)。您可以使用所有 CRUD 操作。在腳本/控制臺(tái)中,您可以使用:

?
1
>> IndianHistory.create (:title => “Jhansi Stories”, :amount => 233.00, :available => 0)

上述代碼行將使用提供的數(shù)據(jù)向 create 動(dòng)作中存在清單 2 中的代碼的控制器創(chuàng)建一個(gè) HTTP POST。
清單 2. Create

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class IndianHistoryController < ActiveResource::Base
def create
@book = IndianHistory.new (params [:indian_history])
respond_to do |format|
if @book.save
flash[:notice] = “New title added successfully”
format.html { redirect_to(@book) }
format.xml { render :xml => @book, :status => :created}
else
format.html { render :action => “new” }
format.xml { render :xml => @book.errors, :status => :unprocessable_entity}
end
end
end
 
end

如果圖書記錄成功保存,將返回新創(chuàng)建的、狀態(tài)碼為 HTTP 201 的記錄,并將使用新創(chuàng)建的記錄重定向視圖。

同樣,您也可以更新和刪除記錄,主要您擁有執(zhí)行管理的權(quán)限和訪問權(quán)。

對(duì)于 Update 操作,在腳本/控制臺(tái)中使用:
清單 3. Update

?
1
2
3
4
5
>> book= IndianHistory.find (2)
>> book.available = 1
>> book.save
>> book = IndianHistory.find (2)
>> book.available # => 1

您更新了圖書的可用性并保存記錄。ActiveResource 和 ActiveRecord 之間有一個(gè)細(xì)微差別:ActiveResource 中沒有方法 save 和 update。

最后,下面的語句將從數(shù)據(jù)庫移除記錄。

?
1
>> IndianHistory.delete(2)

除了上面介紹的基本操作外,Active Resource 還允許通過設(shè)置一個(gè) HTTP 頭部來 支持 HTTP 基本身份驗(yàn)證。假如用戶名和密碼被設(shè)置且在身份驗(yàn)證失敗時(shí)拋出錯(cuò)誤,則客戶機(jī)和服務(wù)器連接的安全檢查就能通過每個(gè)連接上的 Active Resource 身份驗(yàn)證來完成。基本的身份驗(yàn)證也可以輕松實(shí)現(xiàn)。

結(jié)束語

在本文中,您了解了 web 服務(wù)、REST、SOAP 和 Rails Active Resource。一個(gè)簡(jiǎn)單的示例向您展示了 CRUD 操作。

Ruby on Rails Active Resource 包以一種 RESTful 方式提供多個(gè) web 應(yīng)用程序之間的輕松通信。除了 CRUD 操作外,它還允許您創(chuàng)建自定義動(dòng)作。

延伸 · 閱讀

精彩推薦
  • RubyRuby設(shè)計(jì)模式編程中使用Builder建造者模式的實(shí)例

    Ruby設(shè)計(jì)模式編程中使用Builder建造者模式的實(shí)例

    這篇文章主要介紹了Ruby設(shè)計(jì)模式編程中使用Builder建造者模式的實(shí)例,建造者模式將一個(gè)復(fù)雜對(duì)象的構(gòu)造與它的表示分離,使同樣的構(gòu)建過程可以創(chuàng)建不同的表...

    范孝鵬2192020-05-07
  • Ruby簡(jiǎn)要說明Ruby中的迭代器

    簡(jiǎn)要說明Ruby中的迭代器

    這篇文章主要介紹了Ruby中的迭代器,迭代器的概念在動(dòng)態(tài)語言的編程中十分重要,文章中介紹了Ruby中的each迭代器和collect迭代器,需要的朋友可以參考下 ...

    goldensun2772020-04-25
  • RubyRuby簡(jiǎn)潔學(xué)習(xí)筆記(一):字符串、數(shù)字、類和對(duì)象

    Ruby簡(jiǎn)潔學(xué)習(xí)筆記(一):字符串、數(shù)字、類和對(duì)象

    這篇文章主要介紹了Ruby簡(jiǎn)潔學(xué)習(xí)筆記(一):字符串、數(shù)字、類和對(duì)象,本文是學(xué)習(xí)筆記第一篇,需要的朋友可以參考下 ...

    腳本之家2472020-04-20
  • RubyRuby進(jìn)行文件信息輸出實(shí)例代碼

    Ruby進(jìn)行文件信息輸出實(shí)例代碼

    Ruby進(jìn)行文件信息輸出實(shí)例代碼,數(shù)據(jù)是隨機(jī)的,所以每次的記錄都會(huì)不同。 ...

    ruby教程網(wǎng)2962020-04-10
  • RubyCentOS中配置Ruby on Rails環(huán)境

    CentOS中配置Ruby on Rails環(huán)境

    經(jīng)過一個(gè)上午的折騰,終于把ROR環(huán)境在CentOS中搞定,繞了很多彎路,把文章寫下來總結(jié)一下 ...

    可樂加糖4762020-04-12
  • Ruby剖析 Ruby 訪問控制

    剖析 Ruby 訪問控制

    前面,我們說 Ruby 沒有函數(shù),只有方法.而且實(shí)際上有不止一種方法.這一節(jié)我們介紹 訪問控制 (accesscontrols). 想想當(dāng)我們?cè)谧罡邔佣皇窃谝粋€(gè)類的定義里定義...

    ruby教程網(wǎng)3572020-04-08
  • RubyRuby迭代器的7種技巧分享

    Ruby迭代器的7種技巧分享

    這篇文章主要介紹了Ruby迭代器的7種技巧分享,Ruby中的迭代器非常人性化,本文既是講解了7個(gè)技巧也是講解了7種迭代器,需要的朋友可以參考下 ...

    腳本之家4782020-04-20
  • RubyRuby環(huán)境下安裝使用bundler來管理多版本的gem

    Ruby環(huán)境下安裝使用bundler來管理多版本的gem

    這篇文章主要介紹了Ruby環(huán)境下安裝使用bundler來管理多版本的gem的方法,舉了Ruby On Rails中的應(yīng)用實(shí)例來進(jìn)行演示,需要的朋友可以參考下 ...

    日拱一卒4332020-05-10
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产精品久久久久无码av | 精久久| 日本精a在线观看 | 日本不卡视频 | 亚洲免费视频一区二区 | 久久久久久久久99精品 | 成人精品国产 | 欧美自拍偷拍 | 美女一级毛片 | 精品96久久久久久中文字幕无 | 欧美黄色a视频 | 午夜av电影 | 欧美一区永久视频免费观看 | 特级西西人体444www高清大胆 | 中文字幕中文字幕 | 欧美久久久网站 | 国产欧美日韩综合精品一区二区 | 久久久国产视频 | 国产精品成人av | 久久99视频这里只有精品 | 日操 | 欧美日韩视频在线第一区 | 色爱av| 久久精品免费一区二区三区 | 国产一区二区三区视频在线观看 | 欧美午夜一区二区三区免费大片 | 欧美成人免费视频 | 国产乱码精品一区二区三 | www.嫩草 | 一区二区三区四区精品 | 99精品热 | 久久精品国产99精品国产亚洲性色 | 久久精品国产一区二区电影 | 亚洲欧美在线观看 | 精品一区二区三区免费 | 久久久久久av| 黄色网页在线观看 | 久久久av亚洲男天堂 | 国产日韩欧美综合 | 狠狠狠狠狠狠干 | 成人小视频在线观看 |