Hello, I would like to store these http headers in classes:

Host: developer.mozilla.org
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://developer.mozilla.org/testpage.html
Connection: keep-alive
Upgrade-Insecure-Requests: 1
If-Modified-Since: Mon, 18 Jul 2016 02:36:04 GMT
If-None-Match: "c561c68d0ba92bbeb8b0fff2a9199f722e3a621a"
Cache-Control: max-age=0

As you can see, many have unique data (numbers, strings, list of strings). I would like to:

  • store a header name
  • store list of possible options for that header (or store if it’s a number)
  • read an input header and store and return the found option / list of options / number
  • make adding new types of headers as easy as possible

Is making hard coded classes for every type of header viable? How would this be done in the cleanest way possible?

  • @dremOP
    link
    1
    edit-2
    4 months ago

    to access “friendly” parsed versions of commonly used data

    What do you mean by this? And where is the header processing done? And btw thanks for your answer, I knew I was doing something wrong.

    Edit: Are the possible options for headers stored in for example a header class, or are they just checked when clients are processed?

    • Pennomi
      link
      English
      24 months ago

      So for example in “requests”, a popular http framework in Python, there’s a class for the Response object. On that object you can access the special header dictionary at response.headers. Check the docs here under the section Response Headers

      Basically they make a special dictionary that allows headers to be case-insensitive, and combining headers that are provided twice.

      But they also provide a special property response.encoding which derives from the Content-Type header, just for convenience.

      Hopefully that all makes sense.