2013-04-13 27 views
8

Tôi chỉ quen thuộc với phát triển di động gốc, chứ không phải phát triển web, vì vậy hãy tha thứ cho sự vô lý của tôi.Phát triển các trang web có cùng API với điện thoại di động

API cho ứng dụng dành cho thiết bị di động thường liên quan đến yêu cầu qua dữ liệu POST hoặc GET từ API. Dữ liệu sẽ được trả về dưới dạng JSON. Vì lợi ích của ví dụ này, hãy tưởng tượng API là một API đơn giản được cung cấp bởi Sinatra/Ruby, sẽ được cả điện thoại di động và trang web tiêu thụ.

Các tùy chọn để phát triển trang web sử dụng cùng một mô hình - với giao diện web nhận dữ liệu từ cùng một điểm cuối JSON như ứng dụng dành cho thiết bị di động là gì?

Tôi đã nghe tên AngularJS và Backbone.js bị ném xung quanh, mặc dù có lẽ Sinatra là đủ? Tôi không muốn sử dụng PHP.

Tôi thích giải pháp nhẹ hơn. Nếu có thể, tôi muốn nó có thể cập nhật các trang khi mô hình thay đổi, mặc dù tôi đoán điều này sẽ phụ thuộc vào các thay đổi API phụ trợ.

+0

Tôi cũng không quen với phát triển web, nhưng nếu tôi hiểu bạn muốn sử dụng cùng một giao tiếp API trong trang web của bạn (front-end -> back-end) theo cách các ứng dụng di động thực hiện JSON, phải không? Nếu điều đó đúng, tôi không nghĩ đó là lựa chọn tốt nhất bạn có, bởi vì các ứng dụng di động sử dụng JSON để lấy dữ liệu từ cơ sở dữ liệu của máy chủ web và bạn đã có kết nối với cơ sở dữ liệu của mình. đoán của tôi Nó chỉ cần sử dụng MySQL để lấy dữ liệu bạn cần. Xin vui lòng sửa tôi nếu tôi understad bạn sai. – hardartcore

+0

Tôi không có thời gian để trả lời, nhưng để giảm bớt một mối quan ngại: bạn không phải sử dụng PHP nếu bạn đã có sẵn một API JSON có sẵn trên HTTP. Bạn có thể xây dựng một ứng dụng một trang khá đơn giản bằng cách sử dụng HTML và Knockout. –

Trả lời

2

Theo kinh nghiệm của mình, khi tôi phát triển một ứng dụng đa nền tảng, tôi cố gắng làm cho mã và thuật toán của mình trở nên có thể sử dụng lại càng tốt. Vì vậy, khi tôi chuẩn bị một API (với PHP và MySQL chẳng hạn), tôi sử dụng cùng một định dạng truy xuất dữ liệu cho tất cả các nền tảng. Cả hai dự án di động và dự án web đều có thể đọc và gửi dữ liệu qua JSON hoặc XML, vì vậy tôi nghĩ không có vấn đề gì với điều đó.

Mặc dù nếu bạn tập trung tất cả các kết nối cơ sở dữ liệu trên API, bạn sẽ giảm số lượng kết nối (và lỗi) ở mức độ cao.

Bạn có thể xem ví dụ đang chạy trên Foursquare.

3

Một tùy chọn, vì bạn đã quen thuộc với phát triển bản địa, tôi cho rằng bạn sử dụng tốt với java sau đó tôi khuyên bạn nên sử dụng DropWizard để phát triển API của bạn sẽ phân phối JSON qua điểm cuối RESTful.

Webite chính xác giống như quy trình bạn thực hiện trong ứng dụng dành cho thiết bị di động ngoại trừ bạn viết mã bằng ngôn ngữ web dev.

Gửi yêu cầu API. Nhận phản hồi JSON. Phân tích cú pháp JSON thành một đối tượng. Tạo biểu diễn giao diện người dùng của đối tượng bằng HTML, CSS, v.v. Hiển thị độ phân giải giao diện người dùng.

Tất cả những gì bạn cần làm là quyết định ngôn ngữ bạn muốn sử dụng để làm cho POST/GET - PHP, Ajax hoặc một số ngôn ngữ khác do bạn chọn.

+0

Cảm ơn, tôi sẽ cho nó một cái nhìn, mặc dù tôi là một anh chàng iOS. Java của tôi là gỉ. – cannyboy

2

Từ những gì tôi hiểu bạn đang tìm kiếm một khung phát triển web nhẹ, dễ học và xây dựng các trang web động.

Dựa trên yêu cầu của bạn rằng giao diện người dùng web có thể thực hiện yêu cầu HTTP GET/POST để tìm nạp dữ liệu JSON từ API. Các tùy chọn sau là tốt nhất cho bạn:

  1. HTML + AJAX (đối với các trang web động rất đơn giản)
  2. PHP + AJAX (cho các trang web phức tạp hơn)

Các GET request/POST được làm như một cuộc gọi AJAX bằng cách sử dụng một thư viện JS ví dụ jQuery. Ngoài ra, jQuery cung cấp chức năng phân tích cú pháp phản hồi JSON.Vì vậy, về cơ bản bạn cần phải học PHP & jQuery cả hai đều rất phổ biến và dễ sử dụng và có một sự hỗ trợ cộng đồng khổng lồ phía sau chúng.

2

AngularJS hoạt động thực sự tốt cho các ứng dụng loại trang đơn, cung cấp dịch vụ web. Nó có một đường cong học tập hơi dốc hơn so với jQuery ajax call (imo), do đó, tùy thuộc vào nhu cầu của bạn, nó có thể có ý nghĩa hơn để tạo ra ứng dụng của bạn với jQuery.

Các khung công tác JS MVC khác (knockout, ember.js) có thể có chức năng tương tự về việc nhận dữ liệu từ các nguồn JSON, nhưng tôi không thực sự quen thuộc với chúng, vì vậy bạn có thể xem và quyết định.

Nếu không, bạn chỉ cần tạo trang bắt đầu html và bắt đầu cuộc gọi ajax đến các dịch vụ sau khi được tải.

2

Trong "quá khứ" Tôi từng là nhà phát triển web (trong 10 năm), bây giờ tôi là nhà phát triển di động toàn thời gian (kể từ 2.5 năm trước) và tôi đã tạo cả ứng dụng Android và iOS bằng SOAP hoặc REST API.

Trên web, tôi thích làm việc với JQuery và JQuery-UI. JQuery có các cách thực sự gọn gàng và dễ dàng để lấy dữ liệu JSON từ SOAP hoặc REST Web Services để cư các lưới, biểu mẫu, điều khiển hiển thị tiến trình trong khi đợi phản hồi, v.v. Kiểm tra: http://api.jquery.com/jQuery.getJSON/

Tôi hiện đang làm việc trên Ứng dụng iOS với các hoạt động REST và dữ liệu JSON, Nhóm phát triển web đang xây dựng một trang web phụ trợ bằng cách sử dụng các hoạt động backbone.js và JSON-REST để kết nối fron-end với cùng một chương trình phụ trợ mà tôi nói với iOS thông qua JSON-REST. Tôi biết họ sử dụng phân tích cú pháp của backbone.js (để đọc JSON), collection.toJSON() (để chuyển đổi sang JSON) và các phương thức đồng bộ hóa mô hình (nhiều hơn tại http://backbonejs.org/) rất nhiều.

Vì vậy ... Tôi đồng ý với những người khác, miễn là bạn có thể lấy JSON từ REST, bạn có thể sử dụng cùng một phương pháp trên Web và Ứng dụng dành cho thiết bị di động của mình.

Và đây là một bài viết blog hay về cách làm máy chủ RESTful API của bạn đúng cách: http://blog.mugunthkumar.com/articles/restful-api-server-doing-it-the-right-way-part-1/.

Chúc may mắn!

5

Bạn sẽ nhận được số tiền lớn nhất cho buck nếu dịch vụ và tầng giao diện người dùng của bạn là hoàn toàn riêng biệt. Và theo ý tôi, hãy thiết kế các dịch vụ của bạn mà không có một giao diện người dùng cụ thể trong tâm trí, bởi vì làm như vậy sẽ mang lại cho bạn khả năng tái sử dụng tối đa cho chúng. Tôi sẽ khuyên bạn nên thực hiện dịch vụ dựa trên web RESTful, vì chúng cung cấp một số lượng lớn tính linh hoạt cho tích hợp giao diện người dùng. Có nghĩa là quân đoàn của các thư viện bây giờ có khả năng tiêu thụ dữ liệu từ các dịch vụ như vậy.

Tôi không phải là một nhà phát triển Ruby, nhưng đây là một đơn giản thực hiện dịch vụ web trong Sinatra:

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 

Ghi công: Lightweight Webservices with Sinatra and RESTClient.

Lưu ý rằng ngôn ngữ/nền tảng thực tế được sử dụng để triển khai dịch vụ không liên quan, miễn là RESTful và trả về dữ liệu mà khách hàng có thể dễ dàng tiêu thụ. Một khi bạn đã thiết lập, sau đó thiết kế một ứng dụng web vs một ứng dụng di động sẽ trở thành một vấn đề lựa chọn một thư viện tích hợp thích hợp:

  • HTML (5)/CSS/Javascript. Một trong những tùy chọn mạnh mẽ hơn, vì nó có thể được sử dụng để triển khai cả ứng dụng di động và web.Ba công nghệ được đề cập là cốt lõi của kiến ​​trúc Web 2.0 mới và có nhiều khung công tác khác nhau: Angular.js, Ext.js, Backbone.js, Knockout.js và thậm chí jQuery Mobile hoặc Bootstrap. Đây là cách phổ biến nhất để tích hợp API dịch vụ web với các ứng dụng web, hiện tại. Lưu ý rằng trong một số trường hợp, bạn thậm chí có thể lấy đi chỉ bằng cách thiết kế một trang web, sau đó sử dụng nó làm cơ sở cho ứng dụng di động của bạn (ví dụ: thông qua UIWebView của iOS/Android WebView).
  • Proxy cấp trung: Bạn sẽ đi tuyến đường này nếu bạn muốn vô hiệu hóa Ajax trong trình duyệt (vì mục đích bảo mật hoặc để tránh các vấn đề XSS). Proxy có thể được viết bằng bất kỳ ngôn ngữ nào (Java, PHP, Ruby, Perl) và sẽ chịu trách nhiệm về việc tiêu thụ các dịch vụ web của bạn và tạo HTML động cho giao diện người dùng của bạn.

Ví dụ thế giới thực, dự án hiện tại của tôi có một số lượng lớn các dịch vụ web RESTFul được xây dựng bằng cách sử dụng Java EE/JAX-RS chạy trên các máy chủ JBoss nhóm. Các dịch vụ trở về JSON theo mặc định, nhưng cũng có thể tạo XML, và được truy cập từ:

  • các ứng dụng web nội bộ và bên ngoài khác nhau xây dựng sử dụng Ext.js
  • ứng dụng iOS sử dụng một sự kết hợp của AFNetworking/RestKit/NSURLConnection
  • ứng dụng Android sử dụng Jersey REST Client

các dịch vụ chính xác tương tự được sử dụng bởi nhiều nền tảng khác nhau/UI của, không có thay đổi cần thiết về phía dịch vụ. Đó là những gì tôi tin rằng bạn đang cố gắng hoàn thành.

0

Có hai phương pháp chủ yếu để phát triển ứng dụng web bằng cách tiêu thụ các dịch vụ web (nội dung JSON)

  • HTML tinh khiết dựa phương pháp: Trong mô hình này, bạn không cần bất kỳ kịch bản phía máy chủ như PHP, JSP và ASP.Net, v.v. Dịch vụ REST dựa trên JSON của bạn sẽ được JavaScript sử dụng và đưa dữ liệu vào các thành phần HTML. Mô hình lập trình hiện phổ biến hơn và ứng dụng sẽ mượt mà và hoạt động giống như ứng dụng dành cho máy tính để bàn. Có rất nhiều khung công tác sẽ giúp bạn đạt được mục tiêu này. Chúng đã được đề cập trong các câu trả lời trước như Angular.js, Ext.js, Backbone.js, Knockout.js, DoJo, Bootstrap. Ngay cả một số khung công tác này hỗ trợ ràng buộc dữ liệu với các thành phần giao diện người dùng và các dịch vụ nghỉ ngơi dựa trên JSON phía máy chủ. Không yêu cầu bất kỳ mã hóa nào để sử dụng dịch vụ REST và hiển thị các thành phần giao diện người dùng. Nó sẽ được tự động thực hiện thông qua khung khách hàng này. Ví dụ DoJo

  • FF và khuôn khổ như RoR, Django, v.v. để đạt được mục tiêu này. Vì nó liên quan đến ngôn ngữ kịch bản và khuôn khổ khác do đó nó có đường cong học tập so với cách tiếp cận dựa trên HTML và JS.

Tóm lại, tôi khuyên bạn nên bắt đầu với cách tiếp cận đầu tiên.

0

Vì bạn đã có api của bạn được xây dựng trên đầu trang của Ruby, hãy xem xét Ruby on Rails. Tôi là nhà phát triển C#/iOS và chưa bao giờ xem Ruby on Rails cho đến gần đây. Đó là một ngôn ngữ tuyệt vời với sự dễ dàng và linh hoạt tuyệt vời.Để biết thêm thông tin, hãy xem liên kết này http://railsinstaller.org/.

Nó mang đến cho bạn sự linh hoạt hơn trong việc triển khai jQuery và các thư viện dựa trên javascript khác.

Bạn có thể làm việc với cơ sở dữ liệu Sqlite, MySql và PostgreSQl.

Các vấn đề liên quan