Feature/json request

Looking at this again, I wonder if `header` is too generic and this should instead be `accept`? `header` could possibly be used for other header based detectors as well.