Yes, it is possible. payload-expression uses an EvaluationContext with HttpEntity as rootObject, #requestParams and #pathVariables variables. So, if you change it to POST you can get a body!:
payload-expression="new RequestDTO(
#pathVariables.product,
#pathVariables.id,
#requestParams['optionalParam'],
headers.get('headerKey'),
body)"
It is just because HttpEntity has that getter!