我一直在尝试使用 Tornado 框架创建 Web 服务。该系统应该处理以下 URL:
IP:Port/?user=1822&catid=48&skus=AB1,FS35S,98KSU1
首先,我创建了这段代码来读取网址:
#!/usr/bin/env python
from datetime import date
import tornado.httpserver
import tornado.escape
import tornado.ioloop
import tornado.web
class WService(tornado.web.RequestHandler):
def get(self, url):
self.write("value of url: %s" %(url))
application = tornado.web.Application([
(r"/([^/]+)", WService)])
if __name__ == "__main__":
http_server = tornado.httpserver.HTTPServer(application)
http_server.listen(9000)
tornado.ioloop.IOLoop.instance().start()
并输入网址:
IP:Port/hello_world
导致:
value of url: hello_world
URL 中使用的任何字符都有效,“?”除外。更改代码时,例如:
application = tornado.web.Application([
(r"/?([^/]+)", WService)])
并发送带有“?”的网址 标记 ( IP:Port/?hello_world
) 结果为:
404: Not Found
研究 Tornado 来解决这个问题,我找到了get_argument
方法并尝试应用它,例如:
class WService2(tornado.web.RequestHandler):
def get(self):
user = self.get_argument('user', None)
respose = { 'user': user }
self.write(response)
和
application = tornado.web.Application([
(r"/", WService2),
])
但发送 URLIP:Port/user=5
返回:
404:未找到
我也试过:
application = tornado.web.Application([
(r"/(\w+)", WService2),
])
并且:
application = tornado.web.Application([
(r"/([^/]+)", WService2),
])
没有任何效果。
我在阅读带有“?”的 URL 时做错了什么?标记并且 Tornado 没有读取带有参数的 URL 是否有原因user
?有什么遗漏吗?
我已将 Tornado 更新到最新版本,但效果不佳。
如果您需要更多信息或不清楚的地方,请告诉我。
提前致谢,