重定向REST服务的URL

时间:2017-08-28 15:34:40

标签: apache .htaccess mod-rewrite

我能够以某个IP地址访问我的网站,我将实现REST服务。我有一些PHP文件在数据库上执行操作,我从客户端调用它们。我使用linux ubuntu作为服务器,到目前为止我可以这样做:

http://xxx.xxx.xxx.xxx/api/create/?id=someId&val=someValue
http://xxx.xxx.xxx.xxx/api/delete/?id=someId

我可以这样做,因为在/ var / www / html里面我有一个名为api的文件夹,其中包含另一个文件夹calledcreate将文件index.php加入,这样我就可以省略它并执行上面提到的URL。

这很好但我不认为这是正确的方法。我是新手,所以我不知道该怎么做。经过一些研究,我发现我的目标可能是使用.htaccess文件使用url重写来实现的,但我不确定。

我该怎么做?我是否必须将所有php文件放在一个文件夹中,然后使用htaccess文件? (的 ^

^ )更确切地说:而不是拥有此

http://xxx.xxx.xxx.xxx/api/create/index.php?id=someId&val=someValue
http://xxx.xxx.xxx.xxx/api/delete/index.php?id=someId
//and so on with other actions...

我是否必须创建一个像

这样的文件夹
http://xxx.xxx.xxx.xxx/files/

包含我所有的php文件(create.php,delete.php,view.php ...)并使用htaccess重定向?

我看到网站使用www.domain.com/api/something/?data=Valuewww.domain.com/api/something/dataAbout/提供api。他们正在做我对.htaccess所说的话吗?我希望我已经很好地解释了我的问题。

htaccess的:

RewriteEngine On

RewriteRule ^api/([\w-]+)/?$ files/$1.php [L,NC]

这是在/ var / www / html里面,我在/ home / username / api里面有api。

感谢Emma

2 个答案:

答案 0 :(得分:3)

这样做:

  1. files/create.phpdelete.php等文件夹view.php子目录中创建php文件(通过重命名您提到的每个index.php文件)。
  2. api目录移到站点根目录之外的某个位置。
  3. 完成后,请使用/var/www/html/中的.htaccess文件:

    RewriteEngine On
    
    RewriteRule ^api/([\w-]+)/?$ files/$1.php [L,NC]
    

    然后使用新网址:

    http://xxx.xxx.xxx.xxx/api/create?id=someId&val=someValue
    http://xxx.xxx.xxx.xxx/api/delete?id=someId
    

答案 1 :(得分:0)

首先,这不是创建RESTFUL API的正确方法。我的建议是你阅读一篇最佳实践文章。

您不应创建CREATE和DELETE文件夹。您应该使用HTTP操作。

要创建新记录,您应该使用POST。例如,POST /user并在正文中传递用户的信息。

在另一个示例中,您可以使用不同的HTTP方法使用相同的路由:DELETE /user/1删除用户,PATCH /user/1编辑已存在的用户信息。

希望它对你有所帮助。