The article talks about multipart/form-data in particular.<p>Another thing one might run across is multipart/x-mixed-replace. I wrote a crate for that. [1] I didn't see a spec for it, but someone since pointed out to me that it's probably identical to multipart/mixed, and now seeing an example in the multer README it clicks that I should have looked at RFC 2046 section 5.1.1, [2] which says this:<p>> This section defines a common syntax for subtypes of "multipart". All subtypes of "multipart" must use this syntax.<p>...and written a crate general enough for all of them. Maybe I'll update my crate for that sometime. My crate currently assumes there's a Content-Length: for each part, which isn't specified there but makes sense in the context I use it. It wouldn't be hard to also support just the boundary delimiters. And then maybe add a form-data parser on top of that.<p>btw, the article also talks specifically about proxying the body. I don't get why they're parsing the multipart data at all. I presume they have a reason, but I don't see it explained. I'd expect that a body is a body is a body. You can stream it along, and perhaps also buffer it in case you want to support retrying the backhaul request, probably stopping the buffering at some byte limit at which you give up on the possibility of retries, because keeping arbitrarily large bodies around (in RAM or even spilling to SSD/disk) doesn't sound fun.<p>[1] <a href="https://crates.io/crates/multipart-stream" rel="nofollow">https://crates.io/crates/multipart-stream</a><p>[2] <a href="https://datatracker.ietf.org/doc/html/rfc2046#section-5.1.1" rel="nofollow">https://datatracker.ietf.org/doc/html/rfc2046#section-5.1.1</a>