Analizar los parámetros http GET y POST de BaseHTTPHandler?

BaseHTTPHandler del módulo BaseHTTPServer no parece proporcionar ninguna forma conveniente de acceder a los parámetros de solicitud http. ¿Cuál es la mejor manera de analizar los parámetros GET de la ruta y los parámetros POST del cuerpo de la solicitud?

En este momento, estoy usando esto para GET:

def do_GET(self):
    parsed_path = urlparse.urlparse(self.path)
    try:
        params = dict([p.split('=') for p in parsed_path[4].split('&')])
    except:
        params = {}

Esto funciona para la mayoría de los casos, pero me gustaría algo más robusto que maneje codificaciones y casos como parámetros vacíos correctamente. Idealmente, me gustaría algo pequeño y autónomo, en lugar de un marco web completo.

Respuestas a la pregunta(5)

Su respuesta a la pregunta