but i don’t feel like ExpressibleByHTTPRequest is a good name for this protocol, because an HTTP request isn’t an expression, like an integer literal or a string literal.
there’s another precedent we could use: HTTPRequestConvertible, but that doesn’t really make sense, because this protocol doesn’t require the type to be able to encode itself back into an HTTP request - the transformation is unidirectional. ConvertibleFromHTTPRequest is a bit better, but i don’t like invoking the idea of “conversion”; the transformation is expected to discard most of the information from the original request.
I'm not a native English speaker, but I wonder if it's better to use a passive verb than "able" in this case? In my understanding, the use of "able" in Swift naming convention usuallly means an alternative way to initialize a value. In this case, however, it seems those types can only be built from http request. So, how about BuiltFrom_ or DerivedFrom_?
What about SourcedFromHTTPRequest? I'm thinking here of the terminology used in constructors such as Set which are created from other types, e.g. Set's init<Source>(Source). This does not seem to be universal across the Standard Library, though, e.g. String has init<S>(S), but then what does the "S" stand for?