當前位置:首頁 » 編程語言 » restfulphp

restfulphp

發布時間: 2022-05-30 23:48:04

『壹』 如何處理restful對介面安全性問題

REST (REpresentation State Transfer) 描述了一個架構樣式的網路系統,比如 web 應用程序。它首次出現在 2000 年 Roy Fielding 的博士論文中,他是 HTTP 規范的主要編寫者之一。REST 指的是一組架構約束條件和原則。滿足這些約束條件和原則的應用程序或設計就是 RESTful。Web 應用程序最重要的 REST 原則是,客戶端和伺服器之間的交互在請求之間是無狀態的。從客戶端到伺服器的每個請求都必須包含理解請求所必需的信息。如果伺服器在請求之間的任何時間點重啟,客戶端不會得到通知。此外,無狀態請求可以由任何可用伺服器回答,這十分適合雲計算之類的環境。客戶端可以緩存數據以改進性能。在伺服器端,應用程序狀態和功能可以分為各種資源。資源是一個有趣的概念實體,它向客戶端公開。資源的例子有:應用程序對象、資料庫記錄、演算法等等。每個資源都使用 URI (Universal Resource Identifier) 得到一個惟一的地址。所有資源都共享統一的界面,以便在客戶端和伺服器之間傳輸狀態。使用的是標準的 HTTP 方法,比如 GET、PUT、POST 和 DELETE。Hypermedia 是應用程序狀態的引擎,資源表示通過超鏈接互聯。另一個重要的 REST 原則是分層系統,這表示組件無法了解它與之交互的中間層以外的組件。通過將系統知識限制在單個層,可以限制整個系統的復雜性,促進了底層的獨立性。當REST 架構的約束條件作為一個整體應用時,將生成一個可以擴展到大量客戶端的應用程序。它還降低了客戶端和伺服器之間的交互延遲。統一界面簡化了整個系統架構,改進了子系統之間交互的可見性。REST 簡化了客戶端和伺服器的實現。RESTful的實現:RESTful Web 服務與 RPC 樣式的 Web 服務了解了什麼是什麼是REST,我們再看看RESTful的實現。最近,使用 RPC 樣式架構構建的基於 SOAP 的 Web 服務成為實現 SOA 最常用的方法。RPC 樣式的 Web 服務客戶端將一個裝滿數據的信封(包括方法和參數信息)通過 HTTP 發送到伺服器。伺服器打開信封並使用傳入參數執行指定的方法。方法的結果打包到一個信封並作為響應發回客戶端。客戶端收到響應並打開信封。每個對象都有自己獨特的方法以及僅公開一個 URI 的 RPC 樣式 Web 服務,URI 表示單個端點。它忽略 HTTP 的大部分特性且僅支持 POST 方法。由於輕量級以及通過 HTTP 直接傳輸數據的特性,Web 服務的 RESTful 方法已經成為最常見的替代方法。可以使用各種語言(比如 java 程序、Perl、Ruby、Python、php 和 Javascript[包括 Ajax])實現客戶端。RESTful Web 服務通常可以通過自動客戶端或代表用戶的應用程序訪問。但是,這種服務的簡便性讓用戶能夠與之直接交互,使用它們的 Web 瀏覽器構建一個 GET URL 並讀取返回的內容。在REST 樣式的 Web 服務中,每個資源都有一個地址。資源本身都是方法調用的目標,方法列表對所有資源都是一樣的。這些方法都是標准方法,包括 HTTP GET、POST、PUT、DELETE,還可能包括 HEADER 和 OPTIONS。在RPC 樣式的架構中,關注點在於方法,而在 REST 樣式的架構中,關注點在於資源 -- 將使用標准方法檢索並操作信息片段(使用表示的形式)。資源表示形式在表示形式中使用超鏈接互聯。Leonard Richardson 和 Sam Ruby 在他們的著作 RESTful Web Services 中引入了術語 REST-RPC 混合架構。REST-RPC 混合 Web 服務不使用信封包裝方法、參數和數據,而是直接通過 HTTP 傳輸數據,這與 REST 樣式的 Web 服務是類似的。但是它不使用標準的 HTTP 方法操作資源。它在 HTTP 請求的 URI 部分存儲方法信息。好幾個知名的 Web 服務,比如 Yahoo 的 Flickr API 和 del.icio.us API 都使用這種混合架構。RESTful的實現:RESTful Web 服務的 Java 框架有兩個 Java 框架可以幫助構建 RESTful Web 服務。erome Louvel 和 Dave Pawson 開發的 Restlet(見 參考資料)是輕量級的。它實現針對各種 RESTful 系統的資源、表示、連接器和媒體類型之類的概念,包括 Web 服務。在 Restlet 框架中,客戶端和伺服器都是組件。組件通過連接器互相通信。該框架最重要的類是抽象類 Uniform 及其具體的子類 Restlet,該類的子類是專用類,比如 Application、Filter、Finder、Router 和 Route。這些子類能夠一起處理驗證、過濾、安全、數據轉換以及將傳入請求路由到相應資源等操作。Resource 類生成客戶端的表示形式。JSR-311是 Sun Microsystems 的規范,可以為開發 RESTful Web 服務定義一組 Java API。Jersey是對 JSR-311 的參考實現。JSR-311 提供一組注釋,相關類和介面都可以用來將 Java 對象作為 Web 資源展示。該規范假定 HTTP 是底層網路協議。它使用注釋提供 URI 和相應資源類之間的清晰映射,以及 HTTP 方法與 Java 對象方法之間的映射。API 支持廣泛的 HTTP 實體內容類型,包括 HTML、XML、JSON、GIF、JPG 等。它還將提供所需的插件功能,以允許使用標准方法通過應用程序添加其他類型。RESTful的實現:構建 RESTful Web 服務的多層架構RESTful Web 服務和動態 Web 應用程序在許多方面都是類似的。有時它們提供相同或非常類似的數據和函數,盡管客戶端的種類不同。例如,在線電子商務分類網站為用戶提供一個瀏覽器界面,用於搜索、查看和訂購產品。如果還提供 Web 服務供公司、零售商甚至個人能夠自動訂購產品,它將非常有用。與大部分動態 Web 應用程序一樣,Web 服務可以從多層架構的關注點分離中受益。業務邏輯和數據可以由自動客戶端和 GUI 客戶端共享。惟一的不同點在於客戶端的本質和中間層的表示層。此外,從數據訪問中分離業務邏輯可實現資料庫獨立性,並為各種類型的數據存儲提供插件能力。圖1 展示了自動化客戶端,包括 Java 和各種語言編寫的腳本,這些語言包括 Python、Perl、Ruby、PHP 或命令行工具,比如 curl。在瀏覽器中運行且作為 RESTful Web 服務消費者運行的 Ajax、Flash、JavaFX、GWT、博客和 wiki 都屬於此列,因為它們都代表用戶以自動化樣式運行。自動化 Web 服務客戶端在 Web 層向 Resource Request Handler 發送 HTTP 響應。客戶端的無狀態請求在頭部包含方法信息,即 POST、GET、PUT 和 DELETE,這又將映射到 Resource Request Handler 中資源的相應操作。每個請求都包含所有必需的信息,包括 Resource Request Handler 用來處理請求的憑據。從Web 服務客戶端收到請求之後,Resource Request Handler 從業務邏輯層請求服務。Resource Request Handler 確定所有概念性的實體,系統將這些實體作為資源公開,並為每個資源分配一個惟一的 URI。但是,概念性的實體在該層是不存在的。它們存在於業務邏輯層。可以使用 Jersey 或其他框架(比如 Restlet)實現 Resource Request Handler,它應該是輕量級的,將大量職責工作委託給業務層。Ajax 和 RESTful Web 服務本質上是互為補充的。它們都可以利用大量 Web 技術和標准,比如 HTML、JavaScript、瀏覽器對象、XML/JSON 和 HTTP。當然也不需要購買、安裝或配置任何主要組件來支持 Ajax 前端和 RESTful Web 服務之間的交互。RESTful Web 服務為 Ajax 提供了非常簡單的 API 來處理伺服器上資源之間的交互。圖1 中的 Web 瀏覽器客戶端作為 GUI 的前端,使用表示層中的 Browser Request Handler 生成的 HTML 提供顯示功能。Browser Requester Handler 可以使用 MVC 模型(JSF、Struts 或 Spring 都是 Java 的例子)。它從瀏覽器接受請求,從業務邏輯層請求服務,生成表示並對瀏覽器做出響應。表示供用戶在瀏覽器中顯示使用。表示不僅包含內容,還包含顯示的屬性,比如 HTML 和 CSS。 業務規則可以集中到業務邏輯層,該層充當表示層和數據訪問層之間的數據交換的中間層。數據以域對象或值對象的形式提供給表示層。從業務邏輯層中解耦 Browser Request Handler 和 Resource Request Handler 有助於促進代碼重用,並能實現靈活和可擴展的架構。此外,由於將來可以使用新的 REST 和 MVC 框架,實現它們變得更加容易,無需重寫業務邏輯層。數據訪問層提供與數據存儲層的交互,可以使用 DAO 設計模式或者對象-關系映射解決方案(如 Hibernate、OJB 或 iBATIS)實現。作為替代方案,業務層和數據訪問層中的組件可以實現為 EJB 組件,並取得 EJB 容器的支持,該容器可以為組件生命周期提供便利,管理持久性、事務和資源配置。但是,這需要一個遵從 Java EE 的應用伺服器(比如 JBoss),並且可能無法處理 Tomcat。該層的作用在於針對不同的數據存儲技術,從業務邏輯中分離數據訪問代碼。數據訪問層還可以作為連接其他系統的集成點,可以成為其他 Web 服務的客戶端。數據存儲層包括資料庫系統、LDAP 伺服器、文件系統和企業信息系統(包括遺留系統、事務處理系統和企業資源規劃系統)。使用該架構,您可以開始看到 RESTful Web 服務的力量,它可以靈活地成為任何企業數據存儲的統一 API,從而向以用戶為中心的 Web 應用程序公開垂直數據,並自動化批量報告腳本。什麼是REST:結束語REST 描述了一個架構樣式的互聯系統(如 Web 應用程序)。REST 約束條件作為一個整體應用時,將生成一個簡單、可擴展、有效、安全、可靠的架構。由於它簡便、輕量級以及通過 HTTP 直接傳輸數據的特性,RESTful Web 服務成為基於 SOAP 服務的一個最有前途的替代方案。用於 web 服務和動態 Web 應用程序的多層架構可以實現可重用性、簡單性、可擴展性和組件可響應性的清晰分離。Ajax 和 RESTful Web 服務本質上是互為補充的。

『貳』 php開發restful式api中,客戶端的登錄,驗證機制如何該設置

oauth的令牌機制還是很適合api的身份驗證的 實際上就是一種SESSION的變種
本身也沒多少難度 就是按照預先幾個平台約定的key ,請求端通過發送key加某個規則(比如平台id)加密後構成的簽名碼,發送到伺服器端,伺服器根據提供的身份參數查詢獲得預先約定好的key 再用key加規則(比如平台id)加密後確定無誤就算通過 :很像密碼驗證吧。
然後給對方返回一個無序的加密字元串,就是令牌啦。令牌要存在伺服器上,一般存資料庫里和平台請求的來源對應,設置有效期保存。
客戶端拿到這個令牌後就可以通過令牌訪問了,(和SESSION幾乎一模一樣)在伺服器上交互,只需要驗證令牌的正確性和有效期,就可以放行進行操作了。
大致如此,細節有很多變化,機制運作差不多就這個樣子。

『叄』 php 哪個restful框架好用

Yii框架
Yii是一個基於組件、用於開發大型 Web 應用的 高性能 PHP 框架。Yii 幾乎擁有了 所有的特性 ,包括 MVC、DAO/ActiveRecord、I18N/L10N、caching、基於 JQuery 的 AJAX 支持、用戶認證和基於角色的訪問控制、腳手架、輸入驗證、部件、事件、主題化以及 Web 服務等等。Yii 採用嚴格的 OOP 編寫,Yii 使用簡單,非常靈活,具有很好的可擴展性。
yii中文社區:http://www.yiichina.com/

『肆』 php restful api怎麼用

Wax for iPhone這種框架在開發時,旨在把Lua腳本語言和原生Objective-C應用編程介面(API)結合起來。這意味著,你可以從Lua裡面,使用任何和全部的Objective-C類及框架。
從技術上來講,Wax結合了Objective-C類和原生C代碼。Lua語言嵌入了C語言,然後Objective-C類並入到其中。
為什麼使用Wax
Wax是免費的、開源的。與其他一些基於Lua的移動開發解決方案不同,Wax是個開源框架,只需要你花一點點時間就可以上手,不需要花錢。不喜歡Wax的工作方式,或者發現實施方面的缺陷源代碼可免費獲取,你總是可以改動源代碼,以滿足自己的需要。
可以利用原生API。這意味著,為教Objective-C而編寫的教程很容易由Lua for Wax來改動和編寫。這還意味著,你的應用程序在外觀感覺上總是如同原生應用程序,不過又得到了用Lua這種高效腳本語言編寫代碼可以節省時間的好處。
可以使用Xcode。這意味著,模擬器和設備部署都輕而易舉,不會輕易與未來的iOS版本決裂。
可以利用所有現有的Objective-C庫。如果你有一個Objective-C類是以前編寫的,不需要改動,就可以將它用在Lua中——只要把它放入到Xcode。Three20之類的庫也是一樣。只要按照正常指令來添加庫,就可以使用Lua代碼訪問它們。
可以利用Wax Lua模塊。Wax有幾個內置的Lua模塊,使得非同步HTTP請求和JavaScript對象標注(JSON)創建/解析極其容易而快速(因為模塊是用C編寫的)。
沒必要管理內存。不再需要操心內存分配之類的事務。Wax為你處理這一切。
Lua類型自動轉換成對應的Objective-C類型,反之亦然。 這意味著,如果你調用了需要NSString和NSInteger的某個方法,但傳送了Lua字元串和Lua整數,Wax會為你搞定轉換工作。這種轉換功能強大,甚至可以處理復雜的Objective-C特性,比如選擇器。這樣就行,我剛在後盾網問老師的,希望能幫到你。Ψ( ̄(エ) ̄)Ψ努力吧

『伍』 把傳統的PHP Web介面改成符合RESTful風格的Web介面有什麼用處

更符合HTTP協議的標准,主要是為了介面項目的標准化,資源可視化。你可以去研究一下HTTP標准,能有更深的理解。不過在項目中,REST也不是必須的,這是一個更好的選擇而已,你可以當做命名規范,設計規則之類的去理解

『陸』 不明白php的restful,有什麼實際用處嗎

我理解你的問題應該是「把傳統的PHP Web介面改成符合RESTful風格的Web介面有什麼用處?」

其實,這里最好用「好處」這個詞來代替「用處」,因為傳統的Web介面實現方式同樣能夠實現業務需要(所以這不是一個必須的事情,需要自己根據業務需求綜合判斷是否需要採用),而改用「RESTful風格」會有一些額外的「好處」:

統一的風格能夠讓各方更加便利的進行交互,也帶來了更好的兼容性(這是一個所有遵循一定規范所帶來的共通的好處,就像大家都說普通話,交流起來多方便啊)
對資源的操作正好對應相應的HTTP動作(GET、POST、PUT、DELETE),而這些動作正好可以滿足我們對資源狀態進行操作的需要,也就是說想對資源狀態進行什麼樣的操作就選擇什麼樣的動作,而這些動作又是HTTP協議本身提供的,多麼和諧自然啊(就是題主的摘錄內容)
請求所造成的影響明確,或者說副作用明確,比如GET肯定是安全的,PUT和DELETE肯定是冪等得,POST肯定是不安全的(這里的肯定是建立在API設計完全遵循「RESTful風格」基礎上的)
良好的符合「RESTful風格」的URI設計,可以讓Web介面的功能和整體結構更加清晰,僅僅通過URI就能方便的推測出來介面是做什麼的,以及多個資源之間關聯性
利用HTTP內容協商(content negotiation)實現資源的多重表述,比如請求方可以把自己需要的格式放到頭信息的Accept欄位中表述(如Accept: text/json),這樣同樣一個URI就可以輸出多種格式而不再需要在URI裡面特別加上一個type=json的參數了
客戶端、代理伺服器等可以根據HTTP協議規范進行相應的額外處理,比如Cache
... 可能還有我沒總結到的好處(當然也會有一些不足~~)

『柒』 PHP如何編寫RESTful介面的方法實例演示

  1. 就收參數

  2. 處理參數

  3. 返回json格式數據

『捌』 如何使用PHP搭建一個restFul風格的API系統

單入口,常見使用index.php,一般設置全局常量和debug模式

2、統一路由格式,帶上版本號,並盡量採用映射的模式,比如:/v0/proct => /mole/controller/action

3、GET,POST,PUT,DELET,PATCH等常見的請求,採用$_POST,$_GET或者php://input的方式獲取傳來的數據。
你可以去後盾人平台看一下,裡面的東西不錯

『玖』 LAMP系統部署RESTful API應該用JAVA、PHP還是ASP.net

java和php都可以,建議按自己容易掌握的做,一般php入門相對容易。
php和java都有現成的框架做api,
例如php有laravel和yii等框架,國內有thinkphp框架,在框架下面寫會比從0開始寫好很多。
你的apache, centos, mariadb, php,已經滿足php運行環境要求。
asp.net每次都要編譯,相對較慢,但如果你已經有c#基礎和html開發,應該這個也可以。asp.net也有類似的開源開發框架,但數量較少。
多動手,多試試,祝好運!

『拾』 什麼是 RESTful 到底 REST 和 SOAP,RPC 有何區別

第一個問題:什麼是RESTful?

REST這個詞,是Roy Thomas Fielding在他2000年的博士論文中提出的。有興趣可以看看這里論文`,誰是Fielding?點擊前面名字了解。

那RESTful到底是什麼呢?簡單的講,它是:一種架構設計風格,提供了設計原則和約束條件,而不是架構。而滿足這些約束條件和原則的應用程序或設計就是 RESTful架構或服務。

推薦閱讀:
張善友博客——REST 入門介紹

infoq——深入淺出REST

第二個問題:到底 REST 和 SOAP、RPC 有何區別?

這個問題比較大,要知道他們有什麼區別首先需要明白,他們分別是什麼?

REST上面已經簡單的說明了它是什麼。

SOAP(簡單對象訪問協議)是什麼?SOAP是一種數據交換協議規范,是一種輕量的、簡單的、基於XML的協議的規范。它有什麼優點?簡單總結為: 易用,靈活,跨語言,跨平台。

易用:是因為它的消息是基於xml並封裝成了符合http協議,因此,它符合任何路由器、 防火牆或代理伺服器的要求。

靈活:表現在極具拓展性,SOAP 無需中斷已有的應用程序, SOAP 客戶端、 伺服器和協議自身都能發展。而且SOAP 能極好地支持中間介質和層次化的體系結構。

跨語言:soap可以使用任何語言來完成,只要發送正確的soap請求即可。

跨平台:基於soap的服務可以在任何平台無需修改即可正常使用。

RPC(遠程調用框架) 是一種允許分布式應用程序調用網路上不同計算機的可用服務的機制。涉獵不多,一下省略256個字。有熟悉的朋友可以在評論補充,然後我會修改到該內容中去

從上面我們可以看出,REST 和 SOAP、RPC 有何區別呢?沒什麼太大區別,他們的本質都是提供可支持分布式的基礎服務,最大的區別在於他們各自的的特點所帶來的不同應用場景。

REST可以看著是http協議的一種直接應用,默認基於json作為傳輸格式,使用簡單,學習成本低效率高,~~但是安全性較低~~,而SOAP可以看著是一個重量級的協議,基於xml,SOAP在安全方面是通過使用XML-Security和XML-Signature兩個規范組成了WS-Security來實現安全控制的,當前已經得到了各個廠商的支持,.net ,php ,java 都已經對其有了很好的支持 。這是REST薄弱的地方。

熱點內容
編程班會 發布:2025-02-11 21:27:19 瀏覽:738
ubuntu編譯fortran 發布:2025-02-11 21:21:59 瀏覽:201
雲伺服器寬頻單位 發布:2025-02-11 20:48:11 瀏覽:538
安卓數據線公頭是哪個 發布:2025-02-11 20:45:42 瀏覽:812
網址原始密碼是什麼 發布:2025-02-11 20:33:52 瀏覽:72
怎麼創建伺服器我的世界網易 發布:2025-02-11 20:18:36 瀏覽:467
伺服器電腦與客戶端的連接 發布:2025-02-11 20:18:32 瀏覽:36
安卓哪個系統最流暢好用 發布:2025-02-11 20:17:44 瀏覽:879
蘋果平板安卓模擬器哪個好用 發布:2025-02-11 20:17:01 瀏覽:834
手機谷歌伺服器怎麼樣 發布:2025-02-11 20:08:37 瀏覽:221