我可以使用什么来允许Android应用程序与rails应用程序通信

我正在尝试创建一个应用程序,它基本上让Android设备上的用户发送一个立即出现在rails应用程序中的消息。 有没有人建议我会用它做什么?

这是一个快速的演练。

准备基本应用程序

让我们创建一个新的rails应用程序

$ rails new simple-message $ cd simple-message/ 

我们现在要创建一个名为Message的RESTful资源,它将管理来自您手机的消息。

 $ rails generate scaffold Message title:string content:text 

创建将包含消息的表:

 $ rake db:migrate 

启动绑定服务器并将浏览器指向http://0.0.0.0:3000/messages

从那里,您可以手动创建新消息,这些消息将显示为列表。

您的API已经存在

对于您可以使用浏览器导航的每个页面,都有一个相应的视图,可以接受来自其他客户端的编程调用。

如果您浏览http://0.0.0.0:3000/messages.xml,您将获得一个包含所有消息的xml。 curl:

 $ curl http://localhost:3000/messages.xml    2010-11-27T18:24:36Z Just a message 2010-11-27T18:24:36Z 1 With some content   

是时候添加新消息了:

 $ curl -X POST -H 'Content-type: text/xml' -d 'HelloHow are you' http://0.0.0.0:3000/messages.xml   2010-11-27T18:40:44Z Hello 2010-11-27T18:40:44Z 2 How are you  

您的Android客户端必须充当curl才能添加新消息。

保护您的网络应用程序

现在,您需要进行一些身份validation,以便仅允许某些用户充当管理员并限制使用您的API。 在挖掘Rails中实现身份validation的各种方法之前:

  • 您的用户应该在发布消息之前进行身份validation吗
  • Web应用程序是否应接受来自其他服务(即Twitter,Facebook,Google,OAuth,OpenID …)或您自己的用户数据库的身份validation?
  • 您的API是否对其他客户开放,或者只是您的Android客户端可以发布消息?
  • 你需要知道发布了消息(即用户登录)?
  • 是否要阻止单个用户或应用程序将消息发布到您的Web应用程序?

您可以在这里找到不同策略的精彩回顾。

最好的方法是为rails应用程序创建一个API 。 然后,您可以使用Android应用程序的HTTP post请求。

如果您尊重REST范例,那么就像对URL的POST一样简单。