AngularJS - Validación del lado del servidor y formularios del lado del cliente

Estoy tratando de entender cómo hacer las siguientes cosas:

¿Cuál es la forma aceptada de declarar un formulario? Según entiendo, simplemente declara el formulario en HTML y agrega directivas de ng-model así:

ng-model="item.name"

Qué enviar al servidor. Simplemente puedo enviar el objeto objeto al servidor como JSON e interpretarlo. Entonces puedo realizar la validación en el objeto. Si falla, lanzo un error JSON y devuelvo exactamente qué? ¿Hay una forma aceptada de hacer esto? ¿Cómo inserto los errores de validación del servidor al cliente de una manera agradable?

Realmente necesito un ejemplo, pero los documentos de Angulars son bastante difíciles de entender.

Edit: Parece que he formulado mi pregunta mal.

Sé cómo validar el lado del cliente y cómo manejar el error / éxito como devoluciones de llamada de promesa. Lo que quiero saber es la forma aceptada de agrupar los mensajes de error secundarios del SERVIDOR en el cliente. Digamos que tengo un nombre de usuario y contraseña formulario de registro. No quiero sondear el servidor por nombres de usuario y luego usar Angular para determinar que existe un duplicado. Deseo enviar el nombre de usuario al servidor, validar que no existe otra cuenta con el mismo nombre y luego enviar el formulario. Si ocurre un error, ¿cómo lo devuelvo?

¿Qué hay de empujar los datos al servidor tal como está (claves y valores) con un campo de error como el siguiente:

{
  ...data...

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

Luego se vincula al DOM.

Respuestas a la pregunta(8)

Su respuesta a la pregunta