Processing HTTP GET input parameter on server side in python

前端 未结 3 1065
暖寄归人
暖寄归人 2020-12-13 19:50

I wrote a simple HTTP client and server in Python for experimenting. The first code snippet below shows how I send an HTTP GET request with a parameter named imsi. In the se

相关标签:
3条回答
  • 2020-12-13 20:16

    BaseHTTPServer is a pretty low-level server. Generally you want to use a real web framework that does this kind of grunt work for you, but since you asked...

    First import a url parsing library. In Python 2,x it's urlparse. (In Python3, you'd use urllib.parse)

    import urlparse
    

    Then, in your do_get method, parse the query string.

    imsi = urlparse.parse_qs(urlparse.urlparse(self.path).query).get('imsi', None)
    print imsi  # Prints None or the string value of imsi
    

    Also, you could be using urllib in your client code and it would probably be a lot easier.

    0 讨论(0)
  • 2020-12-13 20:19

    cgi module contains FieldStorage class which is supposed to be used in CGI context, but seems to be easily used in your context as well.

    0 讨论(0)
  • 2020-12-13 20:25

    You can parse the query of a GET request using urlparse, then split the query string.

    from urlparse import urlparse
    query = urlparse(self.path).query
    query_components = dict(qc.split("=") for qc in query.split("&"))
    imsi = query_components["imsi"]
    # query_components = { "imsi" : "Hello" }
    
    # Or use the parse_qs method
    from urlparse import urlparse, parse_qs
    query_components = parse_qs(urlparse(self.path).query)
    imsi = query_components["imsi"] 
    # query_components = { "imsi" : ["Hello"] }
    

    You can confirm this by using

     curl http://your.host/?imsi=Hello
    
    0 讨论(0)
提交回复
热议问题