JavaRush /Java Blog /Random-IT /La primavera non fa paura. Controllare il tuo RIPOSO
Павел
Livello 11

La primavera non fa paura. Controllare il tuo RIPOSO

Pubblicato nel gruppo Random-IT
CONTENUTO DEL CICLO DI ARTICOLI Riutilizzare il lavoro di qualcun altro è una questione sacra per qualsiasi sviluppatore 😌 Per andare avanti è necessario comprendere le basi di una rete di computer, ecco una serie di articoli . Presta attenzione ai punti principali: come funziona HTTP, cosa sono GET, POST, PUT, stati delle risposte, MVC, leggi separatamente su JSON e serializzazione . Sarà utile implementare l'esempio proposto con i servlet, questo ti aiuterà ad amare Spring-Boot con tutto il cuore. L'esempio di applicazione spring-boot di questa serie è abbastanza semplice, ma ti aiuterà a comprendere l'essenza di MVC. Di seguito ci sarà un collegamento a un progetto più interessante. Per acquisire familiarità con REST e il suo utilizzo in primavera, leggi questi tre articoli . Nel primo articolo leggerai cos'è il REST. Il secondo articolo parla di richieste e risposte, assicuratevi di leggere e prendere nota del commento del compagno Fidel. Il terzo articolo offrirà un esempio pratico di implementazione in Spring, l’approccio alla creazione di un’applicazione non è molto diverso (è utile guardare e confrontare), implementarla. Presta attenzione al punto in cui parlano di HttpStatus, ResponseEntity <?> (se <?> crea confusione, leggi il capitolo 13. Generalizzazioni da "Java. A Beginner's Guide", Herbert Shildt), nello stesso articolo leggi di POSTMAN ( inoltre un breve video a riguardo ) installa POSTMAN, non hai bisogno di tutte le funzionalità, guarda come creare varie query. Nell'esempio ci sono operatori ternari , rinfrescati la memoria se te ne sei dimenticato. Presta attenzione a come l'articolo di esempio implementa l'iniezione di bean utilizzando @Autowired
@RestController
public class ClientController {

   private final ClientService clientService;

   @Autowired
   public ClientController(ClientService clientService) {
       this.clientService = clientService;
   }
}
Dovresti essere consapevole che a partire dalla Spring 4.3, l'annotazione @Autowired può essere omessa se la classe ha un solo costruttore. Il framework stesso capirà che un bean deve essere implementato nel costruttore. Puoi leggere di più in questa fonte . E se stai attento, allora dovresti avere una domanda sulla struttura del pacchetto di servizi , vale a dire: perché esiste un'interfaccia ClientService e la classe pubblica ClientServiceImpl - questa è una pratica corretta, più tardi parleremo del motivo per cui è necessaria e noi lo userà. Questo è tutto con gli articoli. Prima di leggere, scriviamo. Come si suol dire: "Non un giorno senza codice!" Come punto di partenza, creiamo una semplice richiesta GET. L'ultima volta abbiamo scritto un'applicazione per la speculazione vegetale, git clone https://FromJava@bitbucket.org/FromJava/speculation.git git clone git@bitbucket.org:FromJava/speculation.git Apri l'applicazione e in ru.java package.rush creeremo un pacchetto di controller (i controller del pattern MVC si troveranno qui). Crea una classe pubblica ProductController
@RestController
@RequestMapping("/speculation")
public class ProductController {

}
L'annotazione @RestController indica a Spring che si tratta di un controller di riposo. @RequestMapping: tutti i metodi del controller riceveranno richieste con un URI che inizierà con la stringa specificata tra parentesi di annotazione ("/speculation"). Scriviamo il seguente metodo nella classe
@GetMapping("/simple")
public String simple(){
    return "Легкий GET requestик";
}
Lanciamo il progetto, digitiamo nella riga del browser: http://localhost:8080/speculation/simple Riceviamo la risposta: Richiesta Easy GET Alcune spiegazioni: 1. Abbiamo creato una classe che contrassegnava @RestController come controller, indicava il percorso @RequestMapping ("/ speculation") – questa annotazione è facoltativa; senza di essa, il percorso inizierà con "/". 2. Abbiamo creato un metodo che, una volta eseguito, restituisce una stringa (richiesta Light GET), lo abbiamo contrassegnato con l'annotazione @GetMapping (che questo metodo è specifico per le richieste GET) e abbiamo indicato il percorso del metodo ("/simple") 3. Abbiamo lanciato il progetto (server) sulla porta 8080 e abbiamo effettuato una richiesta GET all'indirizzo: server/controller/method (http://localhost:8080/speculation/simple) 4. La stringa pubblica simple(){ return Il metodo "Easy GET requester" ha funzionato per questa richiesta; } 5. Il risultato del metodo è stato restituito al browser sotto forma di stringa “Easy GET request”. Bene, è un inizio! Gli articoli più affascinanti ti aspettano. Padroneggiare il materiale proposto sopra richiederà più di un giorno, non c'è bisogno di affrettarsi qui, questo argomento è molto importante e deve essere compreso, "mangia l'elefante in parti". Per la formazione (dopo aver padroneggiato il materiale): completare il controller dell'applicazione speculativa . Crea metodi: 1) Cerca un prodotto per ID Utilizza il metodo productService.findById(); Uscita di esempio
{
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": null,
        "salePrice": null
 }
Dopo aver implementato i restanti metodi del controller, pensa: "Perché gli ultimi due campi sono nulli? Cosa è necessario fare affinché ci siano dei valori lì?" 2) Visualizza tutti i prodotti in vetrina: per cercare tutti i prodotti, utilizza il metodo productService.findAll(); Per compilare i campi di packaging e markup, utilizzare productService.pack(); productService.makeMoney(); L'output dovrebbe contenere un array JSON che elenca i prodotti, ad esempio:
[
    {
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 100
    },
    {
        "id": 2,
        "name": "Морковь",
        "purchasePrice": 14,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 70
    }
]
3) Aggiunta di un nuovo prodotto al database (aggiungere prodotto: cavolo e prezzo di acquisto all'ingrosso) Utilizzare: productService.save(); Il metodo dovrebbe restituire lo stato HTTP corrispondente. 4) Eliminazione di un prodotto tramite id Per fare ciò, implementare prima in ProductService un metodo contenente productRepository.deleteById(); E poi, usalo nel controller. Il metodo del controller deve restituire lo stato HTTP appropriato. 5) Modifiche prodotto per id (modifica del prezzo all'ingrosso del prodotto e del nome del prodotto) Questa operazione sarà più complicata delle precedenti. Per prima cosa dobbiamo trovare il prodotto che vogliamo modificare in base all'id. Usa productService.findById(); Quindi, nel prodotto trovato (oggetto), sostituisci il valore dei campi con il valore dei campi dell'oggetto ricevuto nel corpo della richiesta Put (json_object). Questo può essere fatto in questo modo:
найденный_товар = productService.findById(id);
найденный_товар.setName(an object_json.getName);
найденный_товар.setPurchasePrice(an object_json.getPurchasePrice);
Successivamente, il prodotto modificato deve essere salvato productService.save(found_product); Il metodo dovrebbe restituire lo stato HTTP corrispondente. Se hai problemi con questo metodo, puoi cercare su Google "put request java", nessuno ha ancora cancellato Internet) Il lavoro con i controller non finisce qui, ci sono ancora molti argomenti da affrontare...
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION