簡體   English   中英

使用與移動設備相同的API開發網站

[英]Developing websites with same API as mobile

我只熟悉原生移動開發,而不是網絡開發,所以請原諒我的天真。

移動應用程序的API通常涉及通過POST請求或從API請求GET數據。 數據將作為JSON返回。 為了這個例子,假設API是一個由Sinatra / Ruby驅動的簡單API,它將被移動和網站使用。

使用相同范例進行網站開發的選項有哪些 - 網絡前端從與移動應用程序相同的JSON端點獲取數據?

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

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

如果您的服務和UI層完全分開,您將獲得最大的收益。 我的意思是,在沒有特定UI的情況下設計您的服務,因為這樣做可以為您提供最大程度的重用。 我建議使用RESTful,基於Web的服務實現,因為它們為UI集成提供了很大的靈活性。 現在有大量的圖書館能夠從這些服務中消費數據。

我不是Ruby開發人員,但這里是Sinatra中一個簡單的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

歸因: 使用Sinatra和RESTClient的輕量級Web服務

請注意,用於服務實現的實際語言/平台是無關緊要的,只要其RESTful,並返回客戶端可以輕松使用的數據。 完成設置后,設計Web應用程序與移動應用程序就成了選擇合適的集成庫的問題:

  • HTML(5)/ CSS / Javascript 一個更強大的選項,因為它可用於實現移動和Web應用程序。 所提到的三種技術構成了新Web 2.0體系結構的核心,並且存在各種框架: Angular.jsExt.jsBackbone.jsKnockout.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構建的各種內部和外部Web應用程序
  • iOS應用程序使用AFNetworking / RestKit / NSURLConnection的組合
  • 使用Jersey REST Client的 Android應用程序

多個不同平台/ UI使用完全相同的服務,服務端無需更改。 這是我相信你想要完成的。

一個選項,因為你熟悉本機開發,我假設你對java很好,那么我建議你使用DropWizard進行API開發,它將通過RESTful端點提供JSON。

除了您使用Web開發語言進行編碼之外,webite與您在移動應用程序中執行的過程完全相同。

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

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

根據我的經驗,當我開發一個多平台應用程序時,我嘗試盡可能地使我的代碼和算法具有可用性。 因此,當我准備一個API(例如PHP和MySQL)時,我對所有平台使用相同的數據檢索格式。 移動項目和Web項目都可以通過JSON或XML讀取和發送數據,所以我認為沒有問題。

雖然如果集中API上的所有數據庫連接,您將在很大程度上減少連接(和錯誤)的數量。

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

據我所知,您正在尋找一個易於學習和構建動態網站的輕量級Web開發框架。

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

  1. HTML + AJAX(適用於非常簡單的動態網站)
  2. PHP + AJAX(適用於更復雜的網站)

GET / POST請求是使用JS庫(例如jQuery)進行的AJAX調用。 另外,jQuery提供了解析JSON響應的函數。

所以基本上你需要學習PHP和jQuery,它們都非常受歡迎且易於使用,並且在它們背后有很大的社區支持。

AngularJS非常適用於單頁類型的應用程序,可以提供Web服務。 它比jQuery ajax調用(imo)有更陡峭的學習曲線,因此根據您的需要,使用jQuery創建應用程序可能更有意義。

其他JS MVC框架(knockout,ember.js)可能具有與從JSON源獲取數據類似的功能,但我並不熟悉它們,因此您可以查看並決定。

否則,您只需創建一個起始html頁面,並在加載后啟動對服務的ajax調用。

在我的“前世”中,我曾經是一名Web開發人員(已有10年),現在我是一名全職移動開發人員(自2。5年前開始),我使用SOAP或REST API創建了Android和iOS應用程序。

在Web上,我喜歡使用JQuery和JQuery-UI。 JQuery有非常簡單的方法從SOAP或REST Web服務獲取JSON數據,以填充網格,表單,在等待響應時顯示進度的控件等。查看: http//api.jquery.com/jQuery。的getJSON /

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

所以...我同意其他人,只要你能從REST獲得JSON,你就可以在你的網絡和移動應用程序上使用相同的方法。

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

祝好運!

通過使用Web服務(JSON內容)開發Web應用程序有兩種主要方法

  • 基於純HTML的方法 :在此模型中,您不需要任何服務器端腳本,如PHP,JSP和ASP.Net等。您的基於JSON的REST服務將被JavaScript使用並將數據呈現為HTML組件。 編程模型現在更受歡迎,應用程序將流暢並且表現得像桌面應用程序。 有很多框架可以幫助您實現這一目標。 在之前的答案中已經提到過它們,例如Angular.js,Ext.js,Backbone.js,Knockout.js,DoJo,Bootstrap。 甚至一些此框架也支持與UI組件和基於服務器端JSON的休息服務的數據綁定。 不需要任何編碼來使用REST服務和呈現UI組件。 它將通過此​​客戶端框架自動完成。 示例DoJo

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

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

既然你已經在Ruby之上構建了api,那么可以考慮使用Ruby on Rails。 我是一名C#/ iOS開發人員,直到最近才開始研究Ruby on Rails。 這是一種非常容易和靈活的優秀語言。 有關更多信息,請訪問此鏈接http://railsinstaller.org/

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM