Why do you use `std::unique_ptr`'s here? In general, prefer allocating things on stack instead of heap where possible.

Besides in some cases this will lead to incorrect behavior. Consider situation where someone makes a copy of the `HttpRequest` class. Ownership of these fields will be passed to a newly created object and the old one will be invalid from this point. It breaks copying semantics.

So, be cautious of this sort of things. And when you have members allocated on the heap or some resources either write copy constructor and `operator=` or forbid copying for that class.