设置4个“漂亮”网址的资源最少的方式?

时间:2009-12-27 16:59:20

标签: api .htaccess file-extension application-planning pretty-urls

我正计划在Python中使用自己的API。也许有一天我会让它可以自由访问,但现在我只打算在我的爱好网站上使用它。在这个阶段,我需要一些关于如何为接收GET和POST请求的文件设置URL的建议。

假设我的一个文件名为function_A.py,并以这种方式使用:

www.example.com/api/function_A.py?a=something&k=other+thing

我的问题是,如何在资源密集度最低的情况下在API中设置“漂亮”的网址?

我发现大多数API都有典型的网址格式,例如http://www.example.com/api/read而不是http://www.example.com/api/read.py

我的选项可能仅限于mod_rewrite v / s urls.py使用Django - 还是有另一个更简单的选项?

这是针对后端/ API的,我宁愿将开销降到最低。我只想以这种方式处理4个URL,并且不希望每次调用URL时都出现正则表达式。

4 个答案:

答案 0 :(得分:1)

我的猜测是,具有漂亮URL(又称REST)的Web服务API是通过某种web框架(Werkzeug,web.py,django,pylons,cherrypy,plain wsgi,...)构建的。

您所指的模块会处理网址匹配/处理,以确定请求的正确路由。

来自后者的文件:

  

路由解决了Web开发中经常出现的一个有趣问题,如何将URL映射到应用程序的操作?也就是说,你怎么说这应该被/blog/2008/01/08访问,而/login应该这样做?许多Web框架都有固定的调度系统;例如,/A/B/C表示读取目录C中的文件B,或调用模块C中类B的方法A.B。这些工作正常,直到您需要重构代码并意识到移动方法更改其公共URL并使用户的书签无效。同样,如果您想重新组织URL并将某个部分放入子部分,则必须更改经过仔细测试的逻辑代码。

答案 1 :(得分:1)

是的,.htaccess是您可以从Apache Server中的漂亮外部URL映射到服务平台接受的某个grubby URL的方式。

一些复杂的平台也可以生成更好的URL。

答案 2 :(得分:1)

没有魔力。您恰好正在使用基于文件的URL设计的Web服务器。

大多数网站不再使用基于文件的网址,而是进行自己的调度。这就是Django所做的,这就是ASP.NET MVC所做的。

Apache需要查找的内容为mod_rewrite。它允许您将非基于文件的URL映射到Python文件。

或者,看看使用已经完成此操作的Python Web框架。 Web.pyDjango很不错。

答案 3 :(得分:1)

MYYN是正确的。使用Ruby on Rails或Django等框架是创建RESTful API的最简单方法。

但是,如果您不想使用框架,则可以使用Apache中的mod_rewrite执行相同的操作。实际上,这正是Apache上运行的大多数框架/应用程序所做的事情。

例如,Wordpress使用.htaccess文件,如下所示:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

这会将所有请求定向到index.php,在那里可以解析和处理它们。

像RoR或Django这样的框架几乎完全相同:所有请求都被重定向到单个文件/类/函数。