AngularJS - Validação do lado do servidor e formulários do lado do cliente

Eu estou tentando entender como fazer as seguintes coisas:

Qual é a maneira aceita de declarar um formulário? Meu entendimento é que você acabou de declarar o formulário em HTML e adicionar diretivas ng-model da seguinte forma:

ng-model="item.name"

O que enviar para o servidor. Eu posso apenas enviar o objeto de item para o servidor como JSON e interpretá-lo. Então eu posso executar a validação no objeto. Se falhar, eu lanço um erro JSON e envio exatamente o que? Existe uma maneira aceita de fazer isso? Como faço para empurrar erros de validação do servidor para o cliente de uma maneira agradável?

Eu realmente preciso de um exemplo, mas os documentos do Angulars são bem difíceis de entender.

Edit: Parece que eu formulei minha pergunta mal.

Eu sei como validar o lado do cliente, e como lidar com erros / sucessos como callbacks promissores. O que eu quero saber, é a maneira aceita de agrupar mensagens de erro do lado do servidor para o cliente. Digamos que eu tenha um formulário de cadastro de usuário e senha. Eu não quero pesquisar o servidor para nomes de usuário e, em seguida, usar Angular para determinar se existe uma duplicata. Quero enviar o nome de usuário para o servidor, validar nenhuma outra conta com o mesmo nome e, em seguida, enviar o formulário. Se ocorrer um erro, como devo enviá-lo de volta?

Que tal empurrar os dados para o servidor como é (chaves e valores) com um campo de erro acrescentado da seguinte forma:

{
  ...data...

  "errors": [
    {
      "context": null,
      "message": "A detailed error message.",
      "exceptionName": null
    }
  ]
}

Em seguida, ligando para o DOM.

questionAnswers(8)

yourAnswerToTheQuestion