Recientemente aprendí la especificación de la interfaz RESTful y utilicé Postman para presentarla. Aquí están las especificaciones de la interfaz RESTful relevantes: 1. ¿Qué es RESTful?
REST: Es un estilo arquitectónico para servicios web; utiliza estándares y protocolos muy populares como HTTP, URI, XML, JSON y HTML; es un diseño arquitectónico liviano, multiplataforma y multilenguaje; Estilo, no Un estándar es una idea.
RESTful: el chino correspondiente es REST; el servicio web Restful es una aplicación REST común, que es un servicio web que cumple con el estilo REST. El servicio web REST es una arquitectura ROA (arquitectura orientada a recursos); ) [Recomendación: interfaz web]
La esencia de RESTful es un estilo de arquitectura de software. El núcleo está orientado a recursos y resuelve los siguientes problemas:
Reducir la complejidad del desarrollo
Mejorar la escalabilidad del sistema
2.La diferencia entre SOAP y REST:
SOAP (Protocolo simple de acceso a objetos): una especificación de protocolo para el intercambio de datos. Es un protocolo ligero y simple basado en XML.
REST (Transferencia de estado representacional): un estilo de arquitectura de software que puede reducir la complejidad del desarrollo y mejorar la escalabilidad del sistema.
Eficiencia y facilidad de uso :
SOAP : Debido a la continua expansión del contenido de su propio protocolo debido a diversas necesidades, el rendimiento del procesamiento SOAP ha disminuido. Al mismo tiempo, también han aumentado la facilidad de uso y los costes de aprendizaje.
RESTful : debido a su diseño de interfaz orientado a recursos y abstracción de operación, simplifica los malos diseños de los desarrolladores y también aprovecha al máximo el concepto de diseño del protocolo de aplicación original de HTTP.
Seguridad :
RESTful es muy adecuado para interfaces de servicios basados en recursos y es especialmente adecuado para escenarios que requieren alta eficiencia pero bajos requisitos de seguridad.
La madurez de SOAP puede aportar comodidad al diseño de interfaces que deben proporcionarse para múltiples lenguajes de desarrollo y tienen mayores requisitos de seguridad.
En resumen:
Seguridad : SOAP será mejor que REST;
Eficiencia y facilidad de uso : REST es mejor;
Madurez : En términos generales, SOAP es superior a REST en términos de madurez.
3. Cómo diseñar API RESTful :
Ruta de recurso : en la arquitectura RESTful, cada URL representa un recurso, por lo que la URL no puede tener verbos, solo sustantivos. En términos generales, los sustantivos en las API deben estar en plural.
Verbo HTTP : Operación de recursos (CURD), representado por el verbo HTTP (predicado).
OBTENER: recuperar recursos (uno o más elementos) del servidor.
POST: Crea un nuevo recurso en el servidor.
PUT: actualiza los recursos en el servidor (el cliente proporciona los recursos modificados completos).
ELIMINAR: Elimina el recurso del servidor.
Tomemos como ejemplo el zoológico (incluida información sobre varios animales y empleados):
https://api.example.com/v1/zoos //Recursos del zoológico https://api.example.com/v1/animals //Recursos animales https://api.example.com/v1/employees //Empleados recurso
POST /zoos: Crear un nuevo zoológico
GET /zoos/ID: Obtener información sobre un zoológico específico
PUT /zoos/ID: Actualiza la información de un zoológico específico
BORRAR /zoos/D: Eliminar un zoológico
Información del filtro :
?limit=10: Especifique el número de registros devueltos
?offset=10: especifica la posición inicial del registro devuelto.
?page=2&per_page=100: Especifique qué página y número de registros por página.
?sortby=name&order=asc: especifique por qué atributo se ordenan los resultados devueltos y el orden de clasificación.
?animal_type_id=1: Especificar condiciones de filtro
Código de estado :
200 (OK) - si se ha cambiado un recurso existente
201 (creado): si se crea un nuevo recurso
202 (aceptado): la solicitud de procesamiento ha sido aceptada pero no se ha completado (procesamiento asincrónico)
301 (movido permanentemente): se actualizó el URI del recurso
303 (Ver Otros) -Otros (como equilibrio de carga)
400 (solicitud incorrecta): se refiere a una solicitud incorrecta
404 (no encontrado)-El recurso no existe
406 (no aceptable): el servidor no admite la representación requerida
409 (conflicto) - Conflicto genérico
412 (Error de la condición previa): la condición previa falló (como un conflicto al ejecutar actualizaciones de condiciones)
415 (tipo de medio no admitido): la representación recibida no es compatible
500 (error interno del servidor): respuesta de error genérica
503 (Servicio no disponible): el servicio actualmente no puede manejar la solicitud
Manejo de errores :
La información devuelta utiliza error como nombre de clave e información de error como valor de clave.
{
error: "Clave API no válida"
}Resultados devueltos :
GET /collection: Devuelve una lista (matriz) de objetos de recursos
GET /collection/resource: Devuelve un único objeto de recurso
POST /colección: Devuelve el objeto de recurso recién generado
PUT /collection/resource: Devuelve el objeto de recurso completo
PATCH /collection/resource: Devuelve el objeto de recurso completo
ELIMINAR /colección/recurso: devuelve un documento vacío
4.Proceso de prueba de interfaz de estilo REST :
Presentémoslo directamente con una imagen.

5. Escritura de código y prueba de cartero :
Herramientas: idea, base de datos mysql, cartero
Datos de la tabla de base de datos:

Clase de entidad:
Curso de entrada al dominio de front-end (vue): ingrese al aprendizaje
@Datos
@ApiModel("Clase de entidad de usuario")
clase pública Usuario extiende Modelo<Usuario> implementa Serializable {
@ApiModelProperty("ID de usuario")
@NotNull(mensaje = "El ID de usuario no puede estar vacío")
identificación entera privada;
@NotBlank(mensaje = "El nombre de usuario no puede estar en blanco")
@ApiModelProperty("nombre de usuario")
nombre de cadena privada;
@Mín(1)
@Máximo(100)
@ApiModelProperty("Edad del usuario")
edad entera privada;
@NotEmpty(mensaje = "El buzón no puede estar vacío")
@ApiModelProperty("Correo electrónico del usuario")
@Correo electrónico
correo electrónico de cadena privada;
@ApiModelProperty("0: No eliminado 1: Eliminado")
@TableLogic
Entero privado eliminado;
@NotBlank(mensaje = "La contraseña no puede estar en blanco")
@ApiModelProperty("Contraseña de usuario")
contraseña de cadena privada;
}Código de capa de controlador (capa de servicio omitida):
@Api(tags = "Gestión de usuarios")
@RestController
@RequestMapping("/Mi sitio web/usuario")
Controlador de usuario de clase pública {
@autocableado
privado UserServiceImpl userServiceimpl;
@ApiOperation(valor = "Nuevo usuario")
@PostMapping
public int insertUser(Usuario usuario) {
System.out.println("Añadir correctamente");
devolver userServiceimpl.insertUser(usuario);
}
@ApiOperation(valor = "Modificar información del usuario")
@PutMapping
usuario de actualización de vacío público (@RequestBody @ usuario usuario válido) {
userServiceimpl.updateUser(usuario);
System.out.println("Modificación exitosa");
}
@ApiOperation(value = "Eliminar usuario", notas = "Eliminar usuario según su ID")
@DeleteMapping("/{id}")
public int eliminarUsuario(@ApiParam("id de usuario") @PathVariable @ID entero válido) {
System.out.println("Eliminación exitosa");
devolver userServiceimpl.deleteUser(id);
}
@ApiOperation(valor = "Consultar a todos los usuarios")
@GetMapping
Lista pública<Usuario> todoUsuario() {
System.out.println("Consulta exitosa");
devolver usuarioServiceimpl.allUser();
}
@ApiOperation(valor = "usuario de consulta de identificación")
@GetMapping("/{id}")
Usuario público selectById(@PathVariable("id") ID de cadena) {
devolver userServiceimpl.selectById(id);
}
} Utilice Postman para probar (la ruta URL debe corresponder):
Consultar a todos los usuarios : http://localhost:8081/MyWebsite/user
Encabezado: Tipo de contenido=aplicación/json
Cuerpo: vacío

¡Consulta exitosa!
Consulta basada en id:

¡Consulta exitosa!
Agregar nuevo usuario :

¡Compruebe que la base de datos se haya agregado correctamente!

Modificar información del usuario (modificar nombre y edad con ID 7):

¡Compruebe que la modificación de la base de datos fue exitosa!

Eliminar usuarios según la identificación :

¡Compruebe que la base de datos se eliminó correctamente! (eliminado=1)
Tal vez eliminaste todos los datos directamente

Al consultar, actualizar o eliminar datos inexistentes (o los datos son ilegales), la ejecución falla. Hay otras interfaces, como eliminar todas las interfaces. No las he probado una por una aquí. señalarlos.
¡Lo anterior es la introducción detallada de la especificación de la interfaz Restful y la herramienta de depuración del cartero!
