以下是我的代码
import tornado.httpserver
import tornado.ioloop
import tornado.web
class handle_request(tornado.web.RequestHandler):
def get(self,path):
self.write(path+"..............///")
app = tornado.web.Application(handlers=[(r"/(.*)", handle_request)])
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(9999)
print("http://127.0.0.1:9999")
tornado.ioloop.IOLoop.instance().start()
当我到达网址http://127.0.0.1/jo时,它正在打印jo..............//
这是正确的但是当我用jo
替换jo?g
时,它仍然打印相同的jo...............//
我不想要的。那么如何捕捉'?'来自网址。
我注意到,如果我通过jo%3Fg
,那么它正在打印jo?g.........//
但是如何做到这一点?
答案 0 :(得分:0)
网址结构如下(URL):
scheme:[//[user:password@]host[:port]][/]path[?query][#fragment]
sda=qwe
是一个查询(或查询字符串),它不是路径的一部分,?
只是分隔符。要捕获query
,请使用request.query
import tornado.httpserver
import tornado.ioloop
import tornado.web
class handle_request(tornado.web.RequestHandler):
def get(self,path):
self.write(
"{}{}..............///".format(
path, self.request.query)
)
# or whole uri part
self.write(
"{}.............///".format(self.request.uri)
)
app = tornado.web.Application(handlers=[(r"/(.*)", handle_request)])
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(9999)
print("http://127.0.0.1:9999")
tornado.ioloop.IOLoop.instance().start()
单独获取params(解析查询)使用请求的方法get_argument。