【问题标题】:What can I use to allow an android app to communicate with a rails app我可以使用什么来允许 android 应用程序与 rails 应用程序通信
【发布时间】:2011-07-02 22:32:34
【问题描述】:

我正在尝试创建一个应用程序,该应用程序基本上可以让 android 设备上的用户发送一条消息,该消息会立即出现在 rails 应用程序中。有没有人对我会用什么来做这件事有建议?

【问题讨论】:

  • 1) 您的 Rails 应用程序是否已经到位? 2)这些消息被描述为一个宁静的模型吗? 3) 在添加新消息(设计、HTTP 身份验证、...)之前,是否需要遵守任何身份验证层?

标签: android ruby-on-rails


【解决方案1】:

这是一个快速演练。

准备基础应用程序

让我们创建一个新的 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 中实现身份验证的各种方法之前:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      如果您尊重 REST 范例,它就像 POST 到 URL 一样简单。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-17
        • 1970-01-01
        • 2021-04-26
        • 2014-12-20
        • 2013-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多