我正计划在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时都出现正则表达式。
答案 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文件。
答案 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这样的框架几乎完全相同:所有请求都被重定向到单个文件/类/函数。