[erlang-questions] What lib to use for http requests
Loïc Hoguin
essen@REDACTED
Mon Dec 15 19:13:05 CET 2014
On 12/15/2014 01:17 AM, Fred Hebert wrote:
> On 12/14, Eric Pailleau wrote:
>> Hi,
>> ok but RFC 2616 or 2817 ? (or even historical 1945 ?)
>
> By the way you also have RFCs 7230..7235 now, superseding the two previous
> HTTP/1.1 versions. (not sure if anyone would have wanted the 26 drafts
> in between too: http://trac.tools.ietf.org/wg/httpbis/trac/browser#draft-ietf-httpbis)
>
> Best of luck to whoever decides to go for literal RFC support for this.
It's a little more than those 6, there's a number of other RFCs still
standing (PATCH for example) and some others released since (like the
one adding a new redirect status code).
The RFC723x ones are much better though, they don't leave much room for
interpretation (though some things are still undefined) so
implementations following them should be much more compatible.
I am currently working my way through the parsing of HTTP headers from
RFC7230 and RFC7231, making it more precise and more efficient than
previous Cowboy code, and well tested using Triq.
I believe this, and most of the code in Cowlib, would benefit httpc
users, as I don't think httpc comes with header parsing functions and
the like. The drawback though is that httpc uses strings, so it needs to
convert values to binary first. But it'd still be possible for users of
most project to depend on Cowlib and start using the parsing functions
there. They're fairly straightforward too I think:
cow_http_hd:parse_content_type(ContentType)
The parsing code was detached from Cowboy into a separate library so
that it could be shared between projects, so there should be no problem
for other projects using it.
It *is* parsing code only though. The logic code and interface is where
projects would differ the most so it makes little sense to try to
abstract those. For example a proxy server needs to follow different
rules than a plain origin server (including some parsing rules, as
baffling as that is). And origin servers can have entirely different
purposes too.
--
Loïc Hoguin
http://ninenines.eu
More information about the erlang-questions
mailing list