導航:首頁 > 操作系統 > androidrestful框架

androidrestful框架

發布時間:2023-04-11 02:20:03

A. 求助,用flask搭android伺服器

最近這些年,REST已經成凱鏈為web services和APIs的標准架構,很多APP的架構基本上是使用RESTful的形式了。 本文將悉歲會使用python的Flask框架輕松實現一個RESTful的服務。 REST的六個特性: Client-Server:伺服器端與客戶端分離。 Stateless(睜孫睜無狀態

B. REST是什麼如何實現RESTful

什麼是REST?
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 應用程序公開垂直數據,並自動化批量報告腳本。

C. Android Retrofit詳解

Retrofit 是一個 RESTful 的 HTTP 網路請求框架的封裝,網路請求的工作本質上是 OkHttp 完成,而 Retrofit 僅負責 網大知絡祥橘請求介面的封裝

1.添加Retrofit庫的依賴:

後面三個是可選的,分別是數據解析器和gson,以及rxjava支持的依賴

2.創建 用於描述網路請求 的介面
Retrofit將 Http請求 抽象成 Java介面:採用 註解 描述網路請求參數 和配置網路請求參數

3.創建Retrofit實例

4.發送請求
請求分為同步請求和非同步請求

response.body()就是Reception對象,網路請求的完整 Url =在創建Retrofit實例時通過滾宴消.baseUrl()設置 +網路請求介面的註解設置(下面稱 「path「 )
整合的規則如下:

上面我們用了@GET註解來發送Get請求,Retrofit還提供了很多其他的註解類型

1.@GET、@POST、@PUT、@DELETE、@HEAD分別對應 HTTP中的網路請求方式
2.@HTTP替換@GET、@POST、@PUT、@DELETE、@HEAD註解的作用 及 更多功能拓展
具體使用:通過屬性method、path、hasBody進行設置

1.@FormUrlEncoded
表示發送form-encoded的數據,每個鍵值對需要用@Filed來註解鍵名,隨後的對象需要提供值。
2.@Multipart
表示發送form-encoded的數據(適用於 有文件 上傳的場景),每個鍵值對需要用@Part來註解鍵名,隨後的對象需要提供值。

1.@Header & @Headers
添加請求頭 &添加不固定的請求頭

2.@Body
以 Post方式 傳遞 自定義數據類型 給伺服器,如果提交的是一個Map,那麼作用相當於 @Field,不過Map要經過 FormBody.Builder 類處理成為符合 Okhttp 格式的表單,如:

3.@Field & @FieldMap
發送 Post請求 時提交請求的表單欄位,與 @FormUrlEncoded 註解配合使用

4.@Part & @PartMap
發送 Post請求 時提交請求的表單欄位,與@Field的區別:功能相同,但攜帶的參數類型更加豐富,包括數據流,所以適用於 有文件上傳 的場景,與 @Multipart 註解配合使用

5.@Query和@QueryMap
用於 @GET 方法的查詢參數(Query = Url 中 『?』 後面的 key-value)
如:url = http://www.println.net/?cate=android ,其中,Query = cate
配置時只需要在介面方法中增加一個參數即可:

6.@Path
URL地址的預設值

7.@Url
直接傳入一個請求的 URL變數 用於URL設置

D. 安卓app伺服器端開發用什麼java架構

首先,App的服務端跟Web的服務端沒有多大區別,而且在實際的開發過程中,業務邏輯也都是共用一套,只是會針對不同的客戶端做不同的適配(這點可參考Amazon,其對PC的web端,移動的Web端,移動的App都做了不同程度的適配).

其次,既然與Web的服務端沒多大區別,那所用的技術也大同小異,對於App而言,服務端更多是一個數據介面,所以框架頁大同小異;

最後,大致總結一下:

技術:
網路通信: tcp,http等;
Web服務:servlet, cgi腳本,asp等;
系統調度:多線程,並發等;

框架:
對應不同的web服務技術,採用的編程語言不同;
對應不同的網路通信協議,採用的框架也不同,netty->tcp,servlet等web服務框架->http等;
對應系統調度,有不同的多線程,多進程通信框架等;
對應提供不同的服務介面,有web service和restful兩大類,前者基於soap協議,後者基於http協議,對應的框架就很多,不一一敘述;

除此之外,還有很多其他的技術,可先做,發現問題,自然就知道怎麼去找相應的技術、解決方案(包含框架)來解決,所以先動手吧;

E. android開發 為什麼要有RESTful開發經驗

RESTful 是服務端技術,有些公司想開發安卓的兼開發服務端

F. 怎樣為網站的Android客戶端開發RESTful的API

簡單來說就是將網站的功能移植到API方式,主要就是數據格式的變化 html to json or xml
看看微博,豆瓣的 API 文檔,看看他們和自身網站的對應關系。
PS: 抓包分析下知乎的客戶端也是可以的 ;)

G. 怎樣為網站的Android客戶端開發RESTful的API

使用雹行襪springmvc就可以源激了@{@ResponseBody@RequestMapping("/帶昌update")publicMessageupdate(@RequestBodyBaseModelmod,HttpServletRequestrequest){

H. Restful介面框架jersey

所有框架都是在下面這個網站中查詢得到的:
https://mvnrepository.com/

注意:選擇框架的依賴的版本不要選擇太高,最好選擇之前比較成熟的版本

第一步:jersey client框架
// https://mvnrepository.com/artifact/org.glassfish.jersey.core/jersey-client
compile group: 'org.glassfish.jersey.core', name: 'jersey-client', version: '2.28'

第二步:jersey server框架,version選擇低版本
compile group: 'org.glassfish.jersey.core', name: 'jersey-server', version: ''

第三步:jersey-container-servlet框衫如陵架,version選擇低版本
compile group: 'org.glassfish.jersey.containers', name: 'jersey-container-servlet', version: ''

第四步:jersey-hk2框架,version選擇低橡納版本
// https://mvnrepository.com/artifact/或戚org.glassfish.jersey.inject/jersey-hk2
compile group: 'org.glassfish.jersey.inject', name: 'jersey-hk2', version: ''

第五步:jersey.media的json解析庫,version選擇低版本
compile group: 'org.glassfish.jersey.media', name: 'jersey-media-json-jackson', version: ''

I. restful架構和springboot架構有什麼區別

restful是一種編程風格,例如,你請求一個網址www..com?參數1=xixi,換成restful後台代碼接受地址就是:www..com{參數1},請求就悔扮模是:www..comxixi。就是以上長串的請求變成短的了。還有restful返回時json類型數據。

springboot支缺虛持resuful這種api風格。 springboot是快速開發,自動碧緩配置的。

J. android app開發中常用到哪些開源框架

在前面的課程中,隨著對Android體系的了解,已經可以進行正常的Android應用開發了。在Android開發中,同其他工程開發一樣,也經常使用一些提高效率的框架,本文我們做一個對比。這些框架,既包括:網路請求框架、也包括圖片載入庫框架、還包括資料庫操作等一些框架,總之,了解和熟悉這些框架,會對自己的開發效率有很大的提升和幫助。

網路請求框架

1、okHttp

在前文的學習中,我們已經了解過okHttp,是一個常用的網路載入庫。

2、Retrofit

介紹

Retrofit是一個很不錯的網路請求庫,該庫是square開源的另外一個庫,之前的okhttp也是該公司開源的。

Retrofit是基於OkHttp封裝的RESTful網路請求框架,使用註解的方式配置請求。優點是速度快,使用註解,callback函數返回結果自動包裝成Java對象。官方自己的介紹說:

A type-safe REST client for Android and Java

該網路框架在github上的地址如下:https://square.github.io/retrofit/

要求

Retrofit支持的http方式方式包括 GET/POST/PUT/DELETE/HEAD/PATCH,Retrofit要求Java的版本是1.8+,Android應用的API版本應該在21+。

依賴

使用Retrofit庫,和其他庫一樣,首先需要設置依賴,依然是在build.gradle文件中設置依賴:

//添加retrofit庫依賴

implementation 『com.squareup.retrofit2:retrofit:2.1.0』

//添加gson轉換器

implementation 『com.squareup.retrofit2:converter-gson:2.1.0』

使用

通過一個例子,我們可以來演示該框架的使用步驟:

1、定義請求介面,即程序中都需要什麼請求操作
public interface HttpServices {

/**

閱讀全文

與androidrestful框架相關的資料

熱點內容
博科清空命令 瀏覽:384
簡愛英文pdf 瀏覽:376
cnc編程有前途嗎 瀏覽:586
聯想app怎麼聯網 瀏覽:722
linuxftp命令登錄 瀏覽:1000
android獲取圖片縮略圖 瀏覽:646
神戶制鋼螺桿壓縮機 瀏覽:29
差分演化演算法 瀏覽:567
中山市加密軟體 瀏覽:446
mc反編譯源碼 瀏覽:139
企業商城網站源碼 瀏覽:411
shell腳本編程是什麼 瀏覽:762
單片機led閃爍匯編 瀏覽:203
點淘app怎麼沒金蛋了 瀏覽:878
app拉新哪裡找推廣碼 瀏覽:935
哪個app生活服務好 瀏覽:108
mht安卓用什麼軟體打開 瀏覽:320
html5即時通訊源碼 瀏覽:144
python編程基礎豆瓣 瀏覽:710
程序員亂碼是什麼意思 瀏覽:373