Quais são as melhores práticas e considerações para escolher entre 1 e 2 acima?
Normalmente, o corpo do conteúdo é usado para os dados que devem ser carregados / baixados de / para o servidor e os parâmetros de consulta são usados para especificar os dados exatos solicitados. Por exemplo, quando você faz upload de um arquivo, especifica o nome, tipo MIME, etc. no corpo, mas quando busca uma lista de arquivos, você pode usar os parâmetros de consulta para filtrar a lista por alguma propriedade dos arquivos. Em geral, os parâmetros da consulta são propriedade da consulta e não dos dados.
Claro que esta não é uma regra estrita - você pode implementá-la da maneira que achar mais apropriada / adequada para você.
Você também pode querer verificar o artigo da Wikipedia sobre string de consulta , especialmente os dois primeiros parágrafos.