Você não deve esquecer que as solicitações GET têm algumas vantagens superiores em relação a outras soluções:
1) solicitações GET podem ser copiadas da barra de URL, elas são digeridas pelos mecanismos de busca, elas são "amigáveis". Onde "amigável" significa que normalmente uma solicitação GET não deve modificar qualquer coisa dentro de sua aplicação (idempotente) . Este é o caso padrão para uma pesquisa.
2) Todos esses conceitos são muito importantes não apenas do usuário e do mecanismo de pesquisa, mas de um ponto de vista de arquitetura, design de API .
3) Se você criar uma solução alternativa com POST / PUT você terá problemas que você não está pensando agora. Por exemplo, no caso de um navegador, o botão voltar / atualizar página / histórico. Isso pode ser resolvido, é claro, mas vai ser outra solução alternativa, depois outra e outra ...
Considerando tudo isso, meu conselho seria:
a) Você deve ser capaz de se encaixar dentro de seu GET com usando estrutura inteligente de parâmetros . Em casos extremos, você pode até optar por táticas como essa pesquisa no google onde eu defini muitos parâmetros ainda é uma URL super curta.
b) Crie outra entidade em seu aplicativo, como JobSearch . Supondo que você tenha tantas opções, é provável que você também precise armazenar essas buscas e gerenciá-las, de modo que esteja apenas limpando seu aplicativo. Você pode trabalhar com os objetos JobSearch como uma entidade inteira, ou seja, você pode testá-lo / usá-lo mais fácil .
Pessoalmente eu tentaria lutar com todas as minhas garras para fazê-lo com a) e quando toda a esperança estivesse perdida, eu me arrastaria para trás com lágrimas nos olhos para a opção b) .