如何在Web应用程序上实现RESTful服务?

时间:2011-06-20 12:20:17

标签: php jquery android ajax rest

我对标题中的问题进行了大量搜索,但我仍然不确定我应该做什么。我今天早上刚刚听说过RESTful,我读的越多,我就越困惑。

几个星期前,我应该制作一个PHP / jQuery / AJAX Web应用程序,它基本上是一个包含多个用户的简单待办事项列表。在这个过程中我学到了很多关于ajax和jQuery的信息(感谢stackoverflow),我对最终结果非常满意。

该应用程序的工作方式如下: 用户登录,他的id存储在会话变量中。例如,如果他点击“添加”按钮,代码看起来就像这样。

//script.js
$.get("ajax.php",{'action':'new','text': $text, 'list': $selectedList
    },
            function(msg){
                    // add a new task and fade it
                        $(msg).hide().appendTo('.listoftasks').fadeIn();
    });

在ajax.php上

//ajax.php

 if($_GET['action'] == 'new')
    add_task($_GET['text'], $_GET['list'], $_SESSION['user_id']);

所以,因为事实证明网络应用程序的Android应用程序在计划中,我被问到是否可以为它创建RESTful Web服务。任何人都可以指出我正确的方向,是否有可能用这样编码的应用程序实现这种服务,因为我已经读过某些地方(在许多其他事情中),它不能用于会话?

如果有人至少指点我一些基本的教程,那将是很棒的,因为在这一刻这对我来说非常困惑。

感谢您的帮助

编辑:

好的,谢谢大家,我设法做了我的帮助,并且我学到了新的东西,谢谢。我现在遇到的问题是身份验证。基本上Android应用程序向我的api.php页面发送请求,其中包含一些变量(id,list_id等)。现在我如何实现某种形式的身份验证,以便api.php只返回经过身份验证的用户的结果。我已经简短地与应用程序开发人员交谈,基本上他会通过http标头(或类似的东西)向我发送用户名和密码。如何在api.php页面上获取这些值? 谢谢你的帮助:)

2 个答案:

答案 0 :(得分:5)

简而言之 - 一个非常实用的非学术性解释 - RESTful Web服务是一个Web服务器,它响应以下:resource /:action / [:id]模式构建的请求。

例如,您的用户是资源,您可以执行以下操作:

  • GET / users:用户列表
  • GET / users / 5000 / edit:编辑特定用户
  • GET / users / 5000:显示特定用户
  • GET / users / new:创建新用户的表单
  • POST / users /:创建新用户的发布请求。
  • PUT / users / 5000:更新用户的Post请求。
  • DELETE / users / 5000:删除用户的销毁请求。

这是一个CRUD界面:创建,读取,更新,销毁。

您的会话也是资源。

  • POST / session / create:为用户创建新会话。
  • DELETE / session / destroy:删除会话。

某些资源不需要具有所有CRUD操作。

对于描述RESTful架构的原始文档:

http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm

对此事进行更实际的审查:

http://www.amazon.com/Service-Oriented-Design-Rails-Addison-Wesley-Professional/dp/0321659368

答案 1 :(得分:3)

这里有很多有用的信息http://code.google.com/p/implementing-rest/

请注意,网络上有关REST的错误信息比有效信息更多。

  • RESTful几乎与您的网址无关。
  • 构建RESTful系统是关于能够构建可以长期发展的分布式系统。这不是一个短期的快速解决方案。
  • 对RESTFul系统的请求应该彼此独立。在持有身份验证令牌以外的任何请求之间保持类似会话的状态是一个坏主意。

您将在Web上看到的大多数系统都描述为REST,它们只是基于HTTP的远程过程调用API。这是一个有效的体系结构,但它不是REST,因此不需要遵守REST约束,也不一定能获得REST的好处。