这是一个快速演练。
准备基础应用程序
让我们创建一个新的 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。