JavaRush /Blogue Java /Random-PT /A primavera não é assustadora. Controlando seu REST
Павел
Nível 11

A primavera não é assustadora. Controlando seu REST

Publicado no grupo Random-PT
CONTEÚDO DO CICLO DE ARTIGOS Reutilizar o trabalho de outra pessoa é um assunto sagrado para qualquer desenvolvedor 😌 Para seguir em frente, você precisa entender o básico de uma rede de computadores, aqui está uma série de artigos . Preste atenção nos pontos principais: como funciona o HTTP, o que são GET, POST, PUT, status de resposta, MVC, leia separadamente sobre JSON e serialização . Será útil implementar o exemplo proposto com servlets, isso ajudará você a amar o spring-boot de todo o coração. O exemplo de aplicativo spring-boot desta série é bastante simples, mas ajudará você a entender a essência do MVC. Abaixo haverá um link para um projeto mais interessante. Para se familiarizar com REST e seu uso no Spring, leia estes três artigos . No primeiro artigo você lerá o que é REST. O segundo artigo fala sobre pedidos e respostas, não deixe de ler e tomar nota do comentário do camarada Fidel. O terceiro artigo oferecerá um exemplo prático de implementação no Spring, a abordagem para criar uma aplicação não é muito diferente (é útil olhar e comparar), implemente-a. Preste atenção no local onde falam sobre HttpStatus, ResponseEntity <?> (se <?> for confuso, leia o Capítulo 13. Generalizações de "Java. Guia para Iniciantes", Herbert Shildt), no mesmo artigo leia sobre POSTMAN ( além disso, um pequeno vídeo sobre isso ) instale o POSTMAN, você não precisa de todos os recursos, veja como criar várias consultas. Existem operadores ternários no exemplo, refresque sua memória caso tenha esquecido. Preste atenção em como o artigo de exemplo implementa injeção de bean usando @Autowired
@RestController
public class ClientController {

   private final ClientService clientService;

   @Autowired
   public ClientController(ClientService clientService) {
       this.clientService = clientService;
   }
}
Você deve estar ciente de que a partir do Spring 4.3, a anotação @Autowired poderá ser omitida se a classe tiver apenas um construtor. O próprio framework descobrirá que um bean precisa ser implementado no construtor. Você pode ler mais nesta fonte . E se você tomar cuidado, então deverá ter uma dúvida sobre a estrutura do pacote de serviços , a saber: por que existe uma interface ClientService e uma classe pública ClientServiceImpl - esta é a prática correta, mais tarde falaremos sobre por que ela é necessária e nós vai usá-lo. Isso é tudo com os artigos. Antes de ler, vamos escrever. Como se costuma dizer: “Nem um dia sem código!” Como ponto de partida, vamos criar uma solicitação GET simples. Da última vez que escrevemos um aplicativo para especulação vegetal, git clone https://FromJava@bitbucket.org/FromJava/speculation.git git clone git@bitbucket.org:FromJava/speculation.git Abra o aplicativo e no pacote ru. java.rush vamos criar um pacote de controladores (os controladores do padrão MVC estarão localizados aqui). Crie uma classe pública ProductController
@RestController
@RequestMapping("/speculation")
public class ProductController {

}
A anotação @RestController indica ao Spring que este é um controlador rest. @RequestMapping - Todos os métodos do controlador receberão solicitações com um URI que começará com a string especificada entre colchetes de anotação ("/speculation"). Escrevemos o seguinte método na classe
@GetMapping("/simple")
public String simple(){
    return "Легкий GET requestик";
}
Lançamos o projeto, digite na linha do navegador: http://localhost:8080/speculation/simple Obtemos a resposta: Easy GET request Algumas explicações: 1. Criamos uma classe que marcou @RestController como controlador, indicou o caminho para ele @RequestMapping ("/ especulação") – esta anotação é opcional; sem ela, o caminho começará com "/". 2. Criamos um método que, quando executado, retorna uma string (solicitação Light GET), marcamos com a anotação @GetMapping (que este método é específico para requisições GET) e indicamos o caminho para o método ("/simple") 3. Lançamos o projeto (servidor) na porta 8080 e fizemos uma solicitação GET para o endereço: server/controller/method (http://localhost:8080/speculation/simple) 4. A public String simple(){ return O método "solicitante Easy GET" funcionou para esta solicitação; } 5. O resultado do método foi retornado ao navegador na forma da string “Easy GET request”. Bem, é um começo! Os artigos mais fascinantes esperam por você. Dominar o material proposto acima levará mais de um dia, não há necessidade de pressa aqui, esse tema é muito importante e precisa ser entendido, “coma o elefante em partes”. Para treinamento (após dominar o material): Conclua o controlador de aplicação de especulação . Crie métodos: 1) Procure um produto por id Utilize o método productService.findById(); Exemplo de saída
{
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": null,
        "salePrice": null
 }
Depois de implementar os métodos restantes do controlador, pense: "Por que os dois últimos campos são nulos? O que precisa ser feito para que haja alguns valores aí?" 2) Visualizar todos os produtos da vitrine: Para pesquisar todos os produtos, utilize o método productService.findAll(); Para preencher os campos de embalagem e marcação, use productService.pack(); produtoService.makeMoney(); A saída deve conter uma matriz JSON listando produtos, por exemplo:
[
    {
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 100
    },
    {
        "id": 2,
        "name": "Морковь",
        "purchasePrice": 14,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 70
    }
]
3) Adicionar um novo produto ao banco de dados (adicionar produto: repolho e preço de compra no atacado) Use: productService.save(); O método deve retornar o status HTTP correspondente. 4) Excluindo um produto por id Para isso, primeiro implemente em ProductService um método contendo productRepository.deleteById(); E então, use-o no controlador. O método do controlador deve retornar o status HTTP apropriado. 5) Alterações de produto por id (alteração do preço de atacado do produto e nome do produto) Esta operação será mais complicada que as anteriores. Primeiro precisamos encontrar o produto que queremos alterar por id Use productService.findById(); Em seguida, no produto (objeto) encontrado, substitua o valor dos campos pelo valor dos campos do objeto recebido no corpo da solicitação Put (json_object).Isso pode ser feito mais ou menos assim:
найденный_товар = productService.findById(id);
найденный_товар.setName(an object_json.getName);
найденный_товар.setPurchasePrice(an object_json.getPurchasePrice);
Após isso, o produto alterado deve ser salvo productService.save(found_product); O método deve retornar o status HTTP correspondente. Se você tiver problemas com esse método, pode pesquisar no Google “put request java”, ninguém cancelou a Internet ainda) O trabalho com controladores não termina aí, ainda há muitos tópicos pela frente...
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION