Python HTTPBaseServer: маршрутизация запросов к нескольким обработчикам запросов - PullRequest
0 голосов
/ 10 мая 2018

У меня есть пара автономных HTTP-серверов (на основе BaseHTTPServer), которые я хочу объединить в один сервер (также на основе BaseHTTPServer)

Я хочу запустить класс обработчика запросов каждого из моих уже реализованных серверов на основе URL входящего запроса.

Например: для запроса /api1 на моем новом сервере используйте Api1RequestHandler и т. Д.

У вас есть идея, как мне это сделать? Могу ли я использовать экземпляр обработчика запросов нового сервера для вызова других обработчиков?

Это пример идеи:

from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler


class Api1Handler(BaseHTTPRequestHandler):
    def do_GET(self):
        print(self.headers)


class MyHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        print(self.path)
        my_handler2 = Api1Handler(self.request, self.client_address, self.server)
        my_handler2.do_GET()


if __name__ == '__main__':
    server = HTTPServer(('127.0.0.1', 8080), MyHandler)

    try:
        server.serve_forever()
    except KeyboardInterrupt:
        pass

    server.server_close()

1 Ответ

0 голосов
/ 10 мая 2018

Хорошо, я понял, что мне просто нужно наследовать уже реализованные классы обработчиков в моем классе основного обработчика.

from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler


class Api1Handler(BaseHTTPRequestHandler):
    def do_GET(self):
        print("win")
        print(self.headers)


class MyHandler(BaseHTTPRequestHandler, Api1Handler):
    def do_GET(self):
        print(self.path)
        Api1Handler.do_GET(self)


if __name__ == '__main__':
    server = HTTPServer(('127.0.0.1', 8080), MyHandler)

    try:
        server.serve_forever()
    except KeyboardInterrupt:
        pass

    server.server_close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...