JavaRush /Blog Java /Random-ES /La primavera no da miedo. Controlando tu DESCANSO
Павел
Nivel 11

La primavera no da miedo. Controlando tu DESCANSO

Publicado en el grupo Random-ES
CONTENIDOS DEL CICLO DE ARTÍCULOS Reutilizar el trabajo de otra persona es un asunto sagrado para cualquier desarrollador 😌 Para seguir adelante es necesario comprender los conceptos básicos de una red informática, aquí tienes una serie de artículos . Preste atención a los puntos principales: cómo funciona HTTP, qué son GET, POST, PUT, estados de respuesta, MVC, lea por separado sobre JSON y serialización . Será útil implementar el ejemplo propuesto con servlets, esto te ayudará a amar Spring-Boot con todo tu corazón. El ejemplo de aplicación Spring-boot de esta serie es bastante simple, pero le ayudará a comprender la esencia de MVC. A continuación habrá un enlace a un proyecto más interesante. Para familiarizarse con REST y su uso en Spring, lea estos tres artículos . En el primer artículo leerás qué es REST. El segundo artículo habla de solicitudes y respuestas, no dejen de leer y tomar nota del comentario del compañero Fidel. El tercer artículo ofrecerá un ejemplo práctico de implementación en Spring, el enfoque para crear una aplicación no es muy diferente (es útil mirar y comparar), impleméntelo. Preste atención al lugar donde hablan de HttpStatus, ResponseEntity <?> (si <?> le resulta confuso, lea el Capítulo 13. Generalizaciones de "Java. Una guía para principiantes", Herbert Shildt), en el mismo artículo lea sobre POSTMAN ( (Además, un video breve al respecto ) instale POSTMAN, no necesita todas las funciones, vea cómo crear varias consultas. Hay operadores ternarios en el ejemplo, actualice su memoria si lo olvidó. Preste atención a cómo el artículo de ejemplo implementa la inyección de frijoles usando @Autowired
@RestController
public class ClientController {

   private final ClientService clientService;

   @Autowired
   public ClientController(ClientService clientService) {
       this.clientService = clientService;
   }
}
Debe tener en cuenta que a partir de Spring 4.3, la anotación @Autowired se puede omitir si la clase tiene un solo constructor. El propio marco descubrirá que es necesario implementar un bean en el constructor. Puedes leer más en esta fuente . Y si tiene cuidado, entonces debería tener una pregunta sobre la estructura del paquete de servicios , a saber: ¿por qué hay una interfaz ClientService y una clase pública ClientServiceImpl ? Esta es la práctica correcta, más adelante hablaremos sobre por qué es necesaria y Lo usaré. Eso es todo con los artículos. Antes de leer, escribamos. Como dicen: “¡Ni un día sin código!” Como punto de partida, creemos una solicitud GET simple. La última vez que escribimos una aplicación para la especulación vegetal, git clone https://FromJava@bitbucket.org/FromJava/speculation.git git clone git@bitbucket.org:FromJava/speculation.git Abra la aplicación y en ru.java package.rush crearemos un paquete de controladores (los controladores del patrón MVC se ubicarán aquí). Crear una clase pública ProductController
@RestController
@RequestMapping("/speculation")
public class ProductController {

}
La anotación @RestController le indica a Spring que se trata de un controlador de descanso. @RequestMapping: todos los métodos del controlador recibirán solicitudes con un URI que comenzará con la cadena especificada entre corchetes de anotación ("/speculación"). Escribimos el siguiente método en la clase.
@GetMapping("/simple")
public String simple(){
    return "Легкий GET pedidoик";
}
Lanzamos el proyecto, escribimos en la línea del navegador: http://localhost:8080/speculation/simple Recibimos la respuesta: Solicitud GET fácil Algunas explicaciones: 1. Creamos una clase que marcaba @RestController como controlador, indicamos el ruta hacia ella @RequestMapping ("/ especulación"): esta anotación es opcional; sin ella, la ruta comenzará con "/". 2. Creamos un método que, cuando se ejecuta, devuelve una cadena (solicitud GET ligera), lo marcamos con la anotación @GetMapping (que este método es específicamente para solicitudes GET) e indicamos la ruta al método ("/simple") 3. Lanzamos el proyecto (servidor) en el puerto 8080 e hicimos una solicitud GET a la dirección: servidor/controlador/método (http://localhost:8080/speculation/simple) 4. La cadena pública simple(){ return El método "Solicitante Easy GET" funcionó para esta solicitud; } 5. El resultado del método se devolvió al navegador en forma de cadena "Solicitud Easy GET". Bueno, ¡es un comienzo! Los artículos más fascinantes te esperan. Dominar el material propuesto anteriormente llevará más de un día, no hay necesidad de apresurarse, este tema es muy importante y debe entenderse, "cómete el elefante en partes". Para capacitación (después de dominar el material): Complete el controlador de la aplicación de especulación . Crear métodos: 1) Buscar un producto por id. Utilice el método productService.findById(); Salida de ejemplo
{
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": null,
        "salePrice": null
 }
Después de implementar los métodos de controlador restantes, piense: "¿Por qué los dos últimos campos son nulos? ¿Qué se debe hacer para que haya algunos valores allí?" 2) Ver todos los productos en el escaparate: para buscar todos los productos, utilice el método productService.findAll(); Para completar los campos de embalaje y marcado, utilice productService.pack(); productoServicio.makeMoney(); La salida debe contener una matriz JSON que enumere los productos, por ejemplo:
[
    {
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 100
    },
    {
        "id": 2,
        "name": "Морковь",
        "purchasePrice": 14,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 70
    }
]
3) Agregar un nuevo producto a la base de datos (agregar producto: repollo y precio de compra al por mayor) Uso: productService.save(); El método debería devolver el estado Http correspondiente. 4) Eliminar un producto por id Para hacer esto, primero implemente en ProductService un método que contenga productRepository.deleteById(); Y luego, úsalo en el controlador. El método del controlador debe devolver el estado Http apropiado. 5) Cambios de producto por id (cambio en el precio mayorista del producto y nombre del producto) Esta operación será más complicada que las anteriores. Primero necesitamos encontrar el producto que queremos cambiar por id. Use productService.findById(); Luego, en el producto (objeto) encontrado, reemplaza el valor de los campos con el valor de los campos del objeto recibido en el cuerpo de la solicitud Put (json_object), esto se puede hacer algo como esto:
найденный_товар = productService.findById(id);
найденный_товар.setName(un objeto_json.getName);
найденный_товар.setPurchasePrice(un objeto_json.getPurchasePrice);
Después de esto, se debe guardar el producto modificado productService.save(found_product); El método debería devolver el estado Http correspondiente. Si tiene problemas con este método, puede buscar en Google "poner solicitud java", nadie ha cancelado Internet todavía) El trabajo con controladores no termina ahí, todavía quedan muchos temas por delante...
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION