首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rest Web服务?

Rest Web服务?
EN

Stack Overflow用户
提问于 2010-09-26 03:27:41
回答 3查看 901关注 0票数 3

我计划创建一个create风格的web服务(PHP)。

代码语言:javascript
复制
api/user
api/user/[id]
api/ad
api/ad/[id];
etc

"user“和"ad”是真正的php文件吗?如果不是,我怎么知道(在我的php文件上)调用者调用的是"user“还是"ad"?关于如何创建restful风格的web服务,有什么好的教程吗?大多数教程只涵盖了rest web服务的基础知识。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-26 03:41:50

对于简单的服务,您有一个脚本文件(例如,名为PHP )作为入口点,它将各种路径分派到您的函数(当然,这些路径可能在其他index.php文件中)。它是使用您提到的路径之一调用的,该路径附加在脚本名称之后。在脚本中,您可以使用$_SERVER['PATH_INFO']来确定该路径。

您可以通过创建一个只包含以下内容的脚本来尝试一下:

代码语言:javascript
复制
<?php
    phpinfo();
?>

如果您在浏览器中从您的web服务器请求此脚本,您将看到所有相关数据打印在一个漂亮的列表中。向下滚动到PHP变量部分,查看您的PATH_INFO

请参阅http://php.net/manual/en/reserved.variables.server.php

EDIT2:

此外,将访问方法限制为HTTP GET和POST会使您的工作更轻松,因为PHP有$_GET$_POST变量,但没有$_PUT / $_DELETE等变量。但是,您可以使用指定方法的特殊变量发送POST请求,以模拟PUT、DELETE、HEAD或OPTIONS操作(例如_method=PUT)。

当支持GET和POST之外的其他方法时,使用$_SERVER['REQUEST_METHOD']来确定所使用的方法,并从特殊的“文件”php://input (例如,使用file_get_contents('php://input'))读取随请求一起发送的数据。

编辑:

正如tdammers所指出的,Apache非常有用,在这种情况下,可以像这样隐藏脚本的名称(当然,这取决于脚本的位置):

代码语言:javascript
复制
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/api/index\.php(/|$)
RewriteRule ^/api/(.*)$ /api/index.php/$1 [QSA,L]
票数 5
EN

Stack Overflow用户

发布于 2010-09-26 03:45:33

Apache重写规则可能会派上用场。创建一条规则,将/api下的所有内容路由到/api/index.php,将URL的其余部分(例如/ad/user)作为参数添加。因此,http://example.com/api/ad/user被重写为类似http://example.com/api/index.php?path=ad/user的代码。然后,您的index.php脚本可以简单地选取$_GET['path']并执行适当的操作。

票数 1
EN

Stack Overflow用户

发布于 2010-09-26 03:38:13

这两种方法都很好,在CakePHP上可以找到restful服务的一个很好的例子,在蛋糕中你得到了所有的文件,所有的东西都通过一个路由器类。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3795228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档