I saw a couple of frameworks and tutorials that recommend a particular mime type to "solve" problems, making your REST interface "really RESTful" just because it can be done and somehow it makes it kosher for the REST service.
One of the problems with this approach is that by its nature it is hacking or tricking to “make it work” the way you want it when the whole transition point to the hypermedia-driven REST service is changing the model of your API and service and change how you approach the problem. Tinting the “acceptable” or allowed but not recommended HTTP value for Content-Type like telling the starving Venezuelans that rats are fish, so they can eat them without sin during Lent. Is there something wrong with rat food if that's all you have? Probably no. But is his fish pretending to be a fish? Of course not. If you need a contract-driven interface, use RPC or SOAP, or even a custom mime provider type. But do not point to the specification and say that it is Rest, because in the end you eat a rat, and everyone knows it, and you only lie to yourself.
The second problem is that you are losing the actual benefits of the hypermedia-driven interface when you cut corners. Immediately, you had problems with user agents, and your own server should jump over hoops or simply abandon it because the mime type was unfamiliar. That's because you thought you could have it both ways, when it’s not about impressing your customers with claims to a true Rest service or making the download a little easier by dropping (obviously valuable for some contexts) the extra weight of the contract - This influenced the way your service really interacted with external customers.
Finally, I really don't understand how a particular type of mime provider really applies a contract better than a specific endpoint? All the sites that mention this technique seem to just be relieved that this option exists and, frankly, a little smug and happy that they use it as if they know it is technically “naughty”, but it just fixes it . What is the fix? In your case, why don't you just add your inbound person request / content:
POST /myRestService/people
and if they have another request, refer to another endpoint destined for this different data type? If you need the does_something method, could you either go:
GET /myRestService/people/personID_123/does_something
or
GET /myRestService/people/does_something/personID_123
depending on the exact context?
And just so that I don’t feel that it’s actually useless, any disappointment or anger is not directed at you or your question at all, but everyone has developed for the “solution” of the mime-type seller and obsession for “officially approved and printed” Roy Fielding as a valid REST service, "which, apparently, can not even provide anyone with a working public example, leaving only a sense of urgency to accept it immediately, taking any necessary shortcuts, and we can deal with shame and finger pointing later when we de We really fix problems with arrows.