2013-04-13 27 views
8

我只熟悉原生移動開發,而不是網站開發,所以請原諒我的天真。開發與手機API相同的網站

移動應用程序的API通常涉及通過POST或從API獲取數據的請求。數據將作爲JSON返回。爲了這個例子,想象一下這個API是由Sinatra/Ruby提供的一個簡單的API,它將被移動設備和網站所使用。

使用相同範式的網站開發有哪些選項 - Web前端從移動應用獲取來自相同JSON端點的數據?

我聽說過AngularJS和Backbone.js的名字,儘管也許Sinatra夠了?我寧願不使用PHP。

我更喜歡輕量級解決方案。如果可能,我希望它能夠在模型更改時更新頁面,但我猜這取決於後端API更改。

+0

我對Web開發也不太熟悉,但如果我理解您正確,您希望通過移動應用程序通過您的網站(前端 - >後端)使用相同的API通信JSON,對吧?如果這是正確的,我不認爲這是你得到的最好的選擇,因爲移動應用程序使用JSON從Web服務器的數據庫獲取數據,並且你已經在後端與數據庫建立了連接。因此,在網站中不需要任何JSON API我猜。它只需要使用MySQL來獲取你需要的數據。如果我將你誤解爲錯誤,請糾正我。 – hardartcore

+0

我沒有時間回答,但爲了緩解一個問題:如果您已經有可通過HTTP訪問的現有JSON API,則不必使用PHP。您可以使用HTML和Knockout輕鬆構建一個體面的單頁應用程序。 –

回答

2

根據我的經驗,當我開發一個多平臺的應用程序時,我儘量使我的代碼和算法儘可能重用。所以,當我準備一個API時(例如使用PHP和MySQL),我爲所有平臺使用相同的數據檢索格式。移動項目和網絡項目都可以通過JSON或XML讀取和發送數據,所以我認爲沒有關係。

儘管如果您集中API上的所有數據庫連接,您將會減少高度連接(和錯誤)的數量。

您可以在Foursquare上看到一個正在運行的示例。

3

一個選擇,因爲您熟悉本機開發,我假設您對java很好,那麼我建議您使用DropWizard作爲您的API開發,它將通過RESTful端點提供JSON。

網頁與您在移動應用程序中完成的過程完全相同,只是您在網頁開發語言中編碼。

發送請求的API。 獲取JSON響應。 將JSON解析爲對象。 使用HTML,CSS等創建對象的UI表示。 顯示UI respresentation。

您所需要做的就是決定使用哪種語言來創建POST/GET - PHP,Ajax或您選擇的其他語言。

+0

謝謝,我會看看,儘管我更多的是一個iOS的傢伙。我的java是生鏽的。 – cannyboy

2

從我的理解中,您正在尋找一個輕鬆學習和構建動態網站的輕量級Web開發框架。

根據您的要求,Web前端應該能夠發出HTTP GET/POST請求來從API中獲取JSON數據。下列選項是最適合你:

的GET/POST請求時

  1. HTML + AJAX(非常簡單的動態網站)
  2. PHP + AJAX(用於更復雜的網站)作爲使用JS庫的AJAX調用,例如jQuery的。另外,jQuery提供瞭解析JSON響應的函數。

    因此,本質上你需要學習PHP & jQuery這兩個都非常受歡迎,易於使用,並有巨大的社區支持背後。

2

AngularJS對於單頁類型的應用程序確實有效,它支持Web服務。它比jQuery ajax call(imo)有更陡的學習曲線,因此根據您的需要,使用jQuery創建您的應用程序可能更有意義。

其他JS MVC框架(淘汰賽,ember.js)可能有關於從JSON數據源獲取數據類似的功能,但我不是很熟悉,這樣你就可以看看和決定。

否則,您只需創建一個開始HTML頁面,並開始一旦其加載服務Ajax調用。

2

在我的「前世」我曾經是一個Web開發者(10歲),現在我是一個全職的移動開發者(自2.5年前)和我已經創建了Android和iOS應用使用SOAP或REST API。

在Web上,我喜歡使用JQuery和JQuery-UI。 JQuery有真正簡潔的方法從SOAP或REST Web服務獲取JSON數據來填充網格,窗體,顯示進度並等待響應的控件等。檢出:http://api.jquery.com/jQuery.getJSON/

我目前正在使用具有REST操作和JSON數據的iOS應用程序,Web開發團隊正在使用backbone.js和JSON-REST操作構建後端網站,以將前端與我通過JSON-REST與iOS交談的後端連接起來。我知道他們使用backbone.js的解析(讀取JSON),collection.toJSON()(轉換爲JSON)和模型同步方法(更多地在http://backbonejs.org/)很多。

所以...我同意其他人,只要你能得到JSON從REST你可以使用你的Web和移動應用上同樣的方法。

這裏是關於做了RESTful API服務器以正確的方式一篇好的博客文章:http://blog.mugunthkumar.com/articles/restful-api-server-doing-it-the-right-way-part-1/

祝你好運!

5

如果你的服務和UI層次是完全分開,你將獲得最大的回報。我的意思是,在設計你的服務時,不要考慮特定的用戶界面,因爲這樣可以爲你提供最大限度的重用。我會推薦一個基於Web的RESTful服務實現,因爲它們爲UI集成提供了大量的靈活性。現在有大量的圖書館能夠從這些服務中獲取數據。

我不是一個Ruby開發者,但這裏是西納特拉一個簡單的Web服務實現:

require 'rubygems' 
require 'sinatra' 
require 'lib/posts' 

post '/posts' 
    post = Post.create! params 
    redirect "/posts/#{post.id}" 
do 

get 'posts/:id' do 
    @post = Post.find(params[:id]) 
    erb :post 
end 

署名:Lightweight Webservices with Sinatra and RESTClient

注意,用於服務實現的實際語言/平臺是無關緊要的,只要它的REST風格,並返回客戶端可以輕鬆地使用數據。一旦你的設置,則在設計Web應用程序VS移動應用成爲選擇適當的集成庫的問題:

  • HTML(5)/ CSS/JavaScript的。其中一個更強大的選項,因爲它可以用來實現移動和Web應用程序。這三種技術構成了新的Web 2.0體系結構的核心,並且存在各種框架:Angular.js,Ext.js,Backbone.js,Knockout.js,甚至jQuery MobileBootstrap。這是目前將Web服務API與Web應用程序集成的最常見方式。請注意,在某些情況下,您甚至可以設計一個網站,然後將其用作移動應用程序的基礎(例如,通過iOS UIWebView/Android WebView)。
  • 中間層代理:如果您想在瀏覽器中使Ajax無效(出於安全目的或避免XSS問題),您可以使用此路由。代理可以用任何語言(Java,PHP,Ruby,Perl)編寫,並負責使用您的Web服務併爲您的UI生成動態HTML。

作爲一個真實世界的例子,我當前的項目有大量的RESTFul Web服務,它們使用運行在集羣JBoss服務器上的Java EE/JAX-RS構建出來。該服務默認情況下返回JSON,而且還可以生成XML,並從被訪問:內置使用Ext.js使用AFNetworking/RestKit/NSURLConnection的的組合

  • iOS應用程序

    完全相同的服務,Android應用程序是由多個不同的平臺/用戶界面的使用,沒有對服務端所需的更改。這是我相信你正在努力完成的。

  • 0

    有通過使用Web服務(JSON內容)

    • 純HTML爲基礎的方法開發Web應用程序兩種主要方法:在這種模式下,你不需要任何服務器端腳本,如PHP,JSP和ASP.Net等。 您的基於JSON的REST服務將被JavaScript使用並將數據呈現爲HTML組件。 編程模型現在更流行,應用程序將會流暢並像桌面應用程序一樣運行。 有很多框架可以幫助你實現這個目標。 他們已經在前面的答案中提到過,比如Angular.js,Ext.js,Backbone.js,Knockout.js,DoJo,Bootstrap。 即使這個框架的一部分支持與UI組件和基於服務器端JSON的休息服務的數據綁定。不需要任何編碼就可以使用REST服務並呈現UI組件。 它將通過這個客戶端框架自動完成。例如道場

    • HTML和服務器端腳本:在這種方法中,你需要使用任何服務器端腳本語言如PHP,JSP,JSF和框架喜歡的回報率,Django的等,以實現這一目標。因爲它涉及其他腳本語言和框架,因此它具有與基於HTML和JS的方法相比的學習曲線。

    總之,我會建議從第一種方法開始。

    0

    由於您已經將您的api構建在Ruby之上,因此請考慮Ruby on Rails。我是C#/ iOS開發人員,直到最近才從事Ruby on Rails。這是一種非常好用的語言,非常方便和靈活。欲瞭解更多信息,請查看此鏈接http://railsinstaller.org/

    它爲您提供了實現jQuery和其他基於JavaScript的庫的更大的靈活性。

    您可以使用Sqlite,MySql和PostgreSQl數據庫。