Cómo usar AngularJS para construir el backend de administración
El servicio de autenticación de usuario es una función imprescindible para cualquier backend. Ahora existen muchos estándares internacionales para el servicio de autenticación WebAPI. El autor analizó el soporte de estos estándares por parte de varias ruedas de desarrollo de lenguaje. Se han ordenado los estándares:
Sesión
Este es el método de autenticación convencional utilizado por el backend. El backend proporciona una interfaz de inicio y cierre de sesión y se mantiene en el lado del servidor. y las solicitudes web posteriores se basan en la existencia de esta sesión. La ventaja es que la implementación de back-end es relativamente simple y es fácil controlar los permisos del usuario. La desventaja es que no se pueden utilizar sistemas de back-end. En principio, RestfulAPI no puede utilizar sesiones ni cookies, por lo que algunas ruedas obstinadas como (php-yii) claramente no admiten
Autenticación básica HTTP
. Consulte la explicación de la wiki. Cada vez que se agrega el encabezado de solicitud web, el usuario cifrará el nombre/contraseña con base64 y autenticará el descifrado de fondo. La ventaja es que es simple y básicamente todas las ruedas lo admiten. no hay inicio de sesión/cierre de sesión, y la contraseña se pasa en cada solicitud. Siempre siento que hay un problema de seguridad (en realidad no hay problema), por lo que generalmente rara vez se usa en el entorno de producción y es muy bueno en las pruebas. ambiente.
Oauth 2
Este es un esquema de autenticación completo. Consulte la introducción oficial para obtener más detalles. El principio es que el cliente primero solicita un token del servidor de autenticación y luego lo aprueba. El token inicia sesión en segundo plano y el fondo se comunica con el servidor de autenticación para verificar la legitimidad del token, la puntualidad de la comunicación y la autoridad. Los servicios de autenticación ampliamente utilizados actualmente en plataformas abiertas y el backend de Alibaba Cloud están escritos en AngularJS, y sus servicios de autenticación utilizan Oauth2. La ventaja es que la autenticación y el backend están separados y ambas ruedas lo admiten. La desventaja es que es más complicado de implementar
AngularJS
AngularJS (conocido como ng) es actualmente. un marco de interfaz de usuario web popular. También es el marco de interfaz de usuario web más popular en la actualidad. Entre los marcos de front-end web populares, su característica más importante es el enlace de datos.
Debido a esta característica, es más adecuado usarlo como un marco de front-end de back-end desde el que se recuperan los datos del modelo. Después de eso, se presenta a la vista a través del enlace de datos y luego se decora mediante la plantilla de arranque, y se puede implementar rápidamente un sistema de back-end de alta gama.
Estamos usando ng1.3 aquí. Según las instrucciones oficiales, 1.3 ya no es compatible con IE8
Nota: AngularJS 1.3 ha dejado de ser compatible con IE8. Lea más sobre esto en nuestro blog. AngularJS 1.2 seguirá siendo compatible con IE8, pero ya no será compatible con IE8. IE8 seguirá siendo compatible, pero el equipo central no planea dedicar tiempo a abordar problemas específicos con IE8 o versiones anteriores.
CORS
Intercambio de recursos entre orígenes (intercambio de recursos entre dominios ****), utilizamos Ajax para enviar solicitudes WEB, siempre que sea acceso entre dominios. Nos encontraremos con este problema. La solución es agregar etiquetas como Access-Control-Allow-Origin al encabezado de respuesta HTTP del back-end. Generalmente, los desarrolladores proporcionarán complementos para esta función.
Por cierto, hablemos de jsonp. Antes de que naciera CORS, ¡el programador que inventó esta tecnología para resolver problemas entre dominios era realmente un genio! El cliente escribe una función de devolución de llamada y utiliza una solicitud ajax para decirle el nombre de la función de devolución de llamada al servidor. Por cierto, el servidor devuelve los datos y ejecuta la devolución de llamada, porque el servidor ejecuta activamente la devolución de llamada, evitando problemas entre dominios. En la actualidad, jsonp se ha abandonado gradualmente. Una razón es que no es oficial y no es compatible con todos los navegadores. La otra razón es que jsonp solo puede resolver el problema de las solicitudes GET entre dominios.
Postman
Visite el sitio web oficial, postman es un complemento de Chrome que puede probar fácilmente RestfulAPI
Principio de implementación
AngularJS+ RestfulAPI+BasicAuth +Python/PHP/Node.JS para implementar la RestfulAPI más simple. Utilice Node.JS para implementar el backend de gestión de noticias más sencillo.
Requisitos comerciales: proporcionar inicio y cierre de sesión en segundo plano e implementar CRUD de noticias, paginación y búsqueda.
Modelado de base de datos
Nombre de columna
Campo
Significado
Descripción
id int ID PK
título varchar(100) título N
contenido texto contenido N
create_ hora fechahora hora de creación NN
Crear protocolo
URI
Método de solicitud
Retorno
Función
/auth/info GET {userid: int , nombre de usuario:cadena}Verificación de usuario
/ news/ POST NULL news-create
/news/?page=int&search=str GET Vea la nota a continuación news-listing-read p >
/news/:id/ GET {id:int,title:str,content:str,create_ time:str} lectura de noticias
/news/:id/ PUT NULL actualización de noticias
/news/:id/ DELETE NULL eliminación de noticias
/news/deletes/?ids=int,int DELETE NULL eliminación de noticias múltiples
Nota: Lista de noticias - leer
Parámetros de solicitud: página mostrar página, buscar palabra clave de búsqueda
Datos devueltos:
{
total_count:int, // Total número de registros
page_count:int, //Número total de páginas
siguiente: bool, //si hay una página siguiente
anterior: bool, // ¿Hay una página anterior?
resultados:[], //Conjunto de resultados
}1234567
Implementación en segundo plano
Efecto
Demostración fuente
El código fuente es multiplataforma. El entorno de demostración elegido aquí es Win7
Front-end
1) Instalar IIS;
2) Especificar el administrador del directorio virtual como cliente/;
3) Simplemente acceda a min/ (tenga en cuenta que si usa Internet Explorer, necesita usar IE9 o una versión superior del kernel)
Backend - Python
1) Instalar software/python
1) Instalar IIS
1) Instalar IIS
2) Instalar IIS
3) Acceso min/ .
)Instale soft/python-2.7.3.msi;
2) Instale soft/Django-1.9.1.tar.gz (ejecute setup.py install en la línea de comando después de la descompresión)
3) Instale soft/djangorest-framework-master .zip (descomprima y ejecute setup.py install en la línea de comando)
4) Instale soft/django-cors-headers-master.6.16- Win32-VC11-x64.zip (descomprimir)
3) Agregue el directorio php a la variable de entorno del sistema Ruta
4) Ejecute php -S 127.0 en el directorio server-php. 0.1:8000
Tenga en cuenta que hice algunas modificaciones al php.ini en el archivo PHP.
extension=php_ pdoo_sqlite.dll #Agregar soporte para sqlite
always_populate_raw_post_data = -1 #La nueva versión de PHP-win tiene advertencias de vencimiento para funciones antiguas para el procesamiento POST, lo que puede causar CORS interrupciones.
date.timezone = 'Asia/Shanghai' #Corrección de zona horaria
Backend-Node.js
1) Instalar soft/node-v5.0.0- x64 .msi
2) Directorio Servidor->node.js. Ejecute el siguiente comando en el directorio nodejs
> set PORT=8000
> npm start