Instead of repeating io.Read/Unmarshal pattern, use the Decoder, which also gets us content-type negotiation.