1

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

假设我的一个文件以这种方式调用function_A.py和使用:

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

我的问题是,如何以资源最少的方式在 API 中设置“漂亮”的 URL?

我看到大多数 API 都有典型的 URL 格式http://www.example.com/api/read,例如http://www.example.com/api/read.py

我的选择可能仅限于使用 Django 的mod_rewritev/s urls.py- 或者还有其他更简单的选择吗?

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

4

4 回答 4

1

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

您所指的模块负责 url 匹配/处理以确定请求的正确路由。

从后者的文档中:

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

于 2009-12-27T17:04:02.650 回答
1

是的,.htaccess 是您可以从 Apache 服务器中漂亮的外部 URL 映射到您的服务平台接受的一些肮脏 URL 的方式。

一些复杂的平台也确实有办法生成更好的 URL。

于 2009-12-27T17:06:04.033 回答
1

没有魔法。您碰巧使用的是设计时考虑到基于文件的 URL 的 Web 服务器。

大多数网站不再使用基于文件的 URL,而是自己发送。这就是 Django 所做的,这就是 ASP.NET MVC 所做的。

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

或者,看看使用已经做到这一点的 Python Web 框架。Web.pyDjango很好。

于 2009-12-27T17:06:37.620 回答
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 这样的框架实际上做同样的事情:所有请求都被重定向到一个文件/类/函数。

于 2009-12-27T17:15:46.637 回答