我一直试图通过1and1在我的共享托管环境中运行一个简单的web api。
我已经设置了这个路径〜/ myapp / api,我放了所有的python脚本。 这是我无法工作的那个(test.py):
问题在于最后一条路线。它只有在我创建目录“tables”时才有效。否则会抛出一个未找到的错误。
from flask import Flask
app = Flask(__name__)
@app.route('/myapp/')
def api_base():
return "/myapp"
@app.route('/myapp/api/')
def api_base_full():
return "/myapp/api"
@app.route('/myapp/api/table/', methods = ['GET', 'POST'])
def api_routes_table():
if request.method == 'GET':
return getAllTableItems()
elif request.method == 'POST':
return insertNewTableItem()
〜目录中的.htaccess:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^myapp/(.*)$ /myapp/api/cgitester.py/betabank/$1 [L]
cgiteseter.py:
from wsgiref.handlers import CGIHandler
from test import app
CGIHandler().run(app)
我有一种感觉问题出在我的.htaccess文件中,因为我真的不知道我在那里做什么。我无法弄清楚如何解决这个问题,看看flask文档和stackoverflow帖子。谢谢你的帮助
我要做的是创建一个web api,这样当我对GES调用www.example.com/myapp/api/table时,它会返回我的数据库的json。然后www.example.com/myapp/api/table/3将返回表格第3行。现在我只想要打印一些文字,以便我知道正确的函数被调用。
答案 0 :(得分:0)
原来我的.htaccess文件中有一行来自wordpress,导致了所有问题。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#RewriteRule . /index.php [L]
</IfModule>
# END WordPress
在评论出底部的那条线后,它运作良好。
我刚在Oracle网站上找到了这个:
匹配任何地址的规则
特殊模式“。” (单个句点)匹配任何主机/域 规范,如果没有其他规则匹配和主机/域 规范在通道表中的任何地方都找不到。其他 单词,“。”当地址重写时,规则被用作最后的手段 否则会失败。