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

时间:2010-11-27 22:19:34

标签: android ruby-on-rails

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

3 个答案:

答案 0 :(得分:13)

这是一个快速演练。

准备基础应用程序

让我们创建一个新的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 http://localhost:3000/messages.xml
<?xml version="1.0" encoding="UTF-8"?>
<messages type="array">
  <message>
    <created-at type="datetime">2010-11-27T18:24:36Z</created-at>
    <title>Just a message</title>
    <updated-at type="datetime">2010-11-27T18:24:36Z</updated-at>
    <id type="integer">1</id>
    <content>With some content</content>
  </message>
</messages>

是时候添加新消息了:

$ curl -X POST -H 'Content-type: text/xml' -d '<message><title>Hello</title><content>How are you</content></message>' http://0.0.0.0:3000/messages.xml
<?xml version="1.0" encoding="UTF-8"?>
<message>
  <created-at type="datetime">2010-11-27T18:40:44Z</created-at>
  <title>Hello</title>
  <updated-at type="datetime">2010-11-27T18:40:44Z</updated-at>
  <id type="integer">2</id>
  <content>How are you</content>
</message>

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

保护您的网络应用

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

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

您可以找到不同策略here的精彩回顾。

答案 1 :(得分:0)

执行此操作的最佳方法是为您的rails应用创建API。然后,您可以使用Android应用程序的HTTP发布请求。

答案 2 :(得分:0)

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