4 つの「きれいな」URL をセットアップするためのリソース消費量が最も少ない方法は?
-
21-09-2019 - |
質問
Python で自分用の API を計画しています。おそらくいつかは自由にアクセスできるようにするでしょうが、今は趣味のサイトでのみ使用する予定です。この段階では、GET リクエストと POST リクエストの両方を受け取るファイルの URL を設定する方法についてアドバイスが必要です。
私のファイルの 1 つが次のように呼ばれるとします。 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
私の選択肢はおそらく以下に限られています mod_rewrite
対 urls.py
Django を使用します - それとも別の簡単なオプションがありますか?
これはバックエンド/API 用であり、オーバーヘッドを最小限に抑えたいと考えています。この方法で処理したいのは 4 つの URL だけであり、URL が呼び出されるたびに正規表現が発生することは望ましくありません。
解決
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のようなフレームワークは、実質的に同じことを実行します。すべての要求を単一のファイル/クラス/関数にリダイレクトされます。
他のヒント
私の推測では、きれいな URL (別名 REST) を持つ Web サービス API は、ある種の Web フレームワーク (Werkzeug、web.py、django、pylons、cherrypy、plain wsgi など) を介して構築されていると思います。
あなたが参照しているモジュールは、URL の照合/処理を処理して、リクエストの正しいルートを決定します。
- wsgi ルーティングの例: http://wsgi.org/wsgi/仕様/routing_args
- ルートパッケージ: http://routes.groovie.org/
後者のドキュメントから:
Routes は、Web 開発で頻繁に起こる興味深い問題に取り組みます。URL をアプリケーションのアクションにどのようにマッピングするのでしょうか?つまり、これに次のようにアクセスする必要があると言うのはどのように言えますか?
/blog/2008/01/08
, 、 そして/login
それをすべきですか?多くの Web フレームワークには固定のディスパッチング システムがあります。例えば。、/A/B/C
ファイルを読み取るという意味ですC
ディレクトリ内B
, 、またはメソッドを呼び出すC
クラスのB
モジュール内A.B
. 。これらは、コードをリファクタリングする必要が生じ、メソッドを移動するとパブリック URL が変更され、ユーザーのブックマークが無効になることが判明するまでは、正常に機能します。同様に、URL を再編成してセクションをサブセクションにしたい場合は、慎重にテストされたロジック コードを変更する必要があります。
はい、.htaccessファイルは、あなたのサービスプラットフォームを受け入れることを、いくつかの汚いURLにApacheサーバではかなり、外部、URLからマッピングすることができるという方法がある。
いくつかの複雑なプラットフォームが同様に立派なURLを生成する手段を持っています。
魔法はありません。あなたはたまたま、ファイルベースの URL を念頭に置いて設計された Web サーバーを使用しているだけです。
ほとんどのサイトはファイルベースの URL を気にせず、独自のディスパッチを行っています。これが Django の機能であり、ASP.NET MVC の機能です。
調べる必要があるのは、 mod_rewrite アパッチ用。これにより、ファイルベース以外の URL を Python ファイルにマップできるようになります。
あるいは、これをすでに実行している Python Web フレームワークの使用を検討してください。 Web.py そして ジャンゴ は良い。