The content-type header of the response is affected by the accept header of the request. This is not very obvious at first.
So when you register a custom media type to the JsonFormatter or XmlFormatter, the content-type header will not be changed depending on the type of the response object. Rather it matches the accept header in the request.
If the accept header in the request is not accepted, then the services will default to application/json or application/xml.
Example: let’s say you have a service model called Student, a custom media type “application/mycompany.com+json”, and a web service endpoint that returns a student by ID.
If you just use the browser to make a request to this endpoint, the content-type header in the response will likely be set to “application/json” or “application/xml” depending on your preferred setting and browser.
However if you set the accept header in the request to “application/mycompany.com+json”, the content-type type response header will be set to the same type.
There is no mapping between the types and the service model from the backend side.