Django で HTSQL を使用しています。HTSQL シェルを使用してクエリをチェック/生成し、それらを使用してデータを json および raw 形式でレンダリングします。私のHTSQLシェルのURLは次のとおりです。
http://127.0.0.1:8000/htsql
HTSQL シェル環境でテーブルからデータにアクセスする場合は、
http://127.0.0.1:8000/htsql/table_name
JSON データを取得するには、
http://127.0.0.1:8000/htsql/table_name/:json
バックグラウンドで、HTSQL シェルは GET 要求を使用してこのデータをフェッチします。したがって、クライアント側の Javascipt/jQuery から、上記の形式の URL を使用して GET 要求を開始し、目的の JSON データを直接取得します。
ローカルの Django サーバーを使用していたときはすべて問題ありませんでしたが、Gunicorn と Nginx を使用してプロジェクトを展開すると、GET 要求で長い (実際にはかなり長い) クエリの一部が自然にブロックされ始めました。この問題を調べたところ、Gunicorn では 0 から 8190 文字の範囲の GET 要求値が許可されていることがわかりました。そのため、Gunicorn の設定を最大制限に調整しましたが、それでも同じ問題が発生しました。これは、私のクエリが複数のフィルター値で使用されると、8190 の制限を超えているためです。
そのため、安全で長いリクエストに通常優先される POST リクエストを使用することを考えました。そこで、GET リクエストを POST リクエストに変更し、上記と同じ URL を指定して、ローカルの Django サーバー (つまり、Gunicorn と Nginx なし) で試しました。しかし、今では「400 BAD REQUEST」が表示されます。firebugで、「POSTリクエストは許可されていません」というレスポンスを確認しました。
また、HTSQL_Django モジュールがすべてのリクエストを htsql_django.views.gateway にルーティングしていることにも気付きました。htsql_django モジュールの views.py でこのゲートウェイ関数を調べましたが、手がかりが見つかりませんでした。
HTSQL が POST リクエストを受け付けないということですか?? POST リクエストを使用して HTSQL から JSON データをフェッチ/アクセスするにはどうすればよいですか?