JavaRush /Java-Blog /Random-DE /Der Frühling ist nicht gruselig. Kontrollieren Sie Ihren ...
Павел
Level 11

Der Frühling ist nicht gruselig. Kontrollieren Sie Ihren REST

Veröffentlicht in der Gruppe Random-DE
INHALT DES ARTIKELZYKLUS Die Wiederverwendung der Arbeit eines anderen ist für jeden Entwickler eine heilige Angelegenheit 😌 Um fortzufahren, müssen Sie die Grundlagen eines Computernetzwerks verstehen. Hier finden Sie eine Artikelserie . Achten Sie auf die wichtigsten Punkte: wie HTTP funktioniert, was GET, POST, PUT sind, Antwortstatus, MVC, lesen Sie separat über JSON und Serialisierung . Es wird nützlich sein, das vorgeschlagene Beispiel mit Servlets zu implementieren. Dies wird Ihnen helfen, Spring-Boot von ganzem Herzen zu lieben. Die Beispiel-Spring-Boot-Anwendung aus dieser Serie ist recht einfach, hilft Ihnen jedoch, das Wesentliche von MVC zu verstehen. Unten finden Sie einen Link zu einem interessanteren Projekt. Um sich mit REST und seiner Verwendung in Spring vertraut zu machen, lesen Sie diese drei Artikel . Im ersten Artikel erfahren Sie, was REST ist. Im zweiten Artikel geht es um Anfragen und Antworten. Lesen Sie unbedingt den Kommentar von Genosse Fidel und nehmen Sie ihn zur Kenntnis. Der dritte Artikel bietet ein praktisches Beispiel für die Implementierung im Frühjahr. Der Ansatz zum Erstellen einer Anwendung unterscheidet sich nicht wesentlich (es ist nützlich, sie anzusehen und zu vergleichen) und sie dann zu implementieren. Achten Sie auf die Stelle, an der über HttpStatus und ResponseEntity <?> gesprochen wird (wenn <?> verwirrend ist, lesen Sie Kapitel 13. Verallgemeinerungen aus „Java. A Beginner's Guide“, Herbert Shildt), im selben Artikel lesen Sie über POSTMAN ( zusätzlich kurzes Video dazu ) Installieren Sie POSTMAN, Sie benötigen nicht alle Funktionen, sehen Sie, wie Sie verschiedene Abfragen erstellen. Im Beispiel gibt es ternäre Operatoren . Aktualisieren Sie Ihr Gedächtnis, wenn Sie es vergessen haben. Achten Sie darauf, wie der Beispielartikel die Bean-Injection mithilfe von @Autowired implementiert
@RestController
public class ClientController {

   private final ClientService clientService;

   @Autowired
   public ClientController(ClientService clientService) {
       this.clientService = clientService;
   }
}
Sie sollten sich darüber im Klaren sein, dass ab Spring 4.3 die @Autowired-Annotation weggelassen werden kann, wenn die Klasse nur einen Konstruktor hat. Das Framework selbst erkennt, dass eine Bean im Konstruktor implementiert werden muss. Weitere Informationen finden Sie in dieser Quelle . Und wenn Sie vorsichtig sind, sollten Sie eine Frage zur Struktur des Servicepakets haben , nämlich: Warum gibt es eine Schnittstelle „ClientService“ und eine öffentliche Klasse „ClientServiceImpl“ ? Dies ist die richtige Vorgehensweise. Später werden wir darüber sprechen, warum sie benötigt wird Werde es nutzen. Das ist alles mit den Artikeln. Bevor wir lesen, schreiben wir. Wie sie sagen: „Kein Tag ohne Code!“ Als Ausgangspunkt erstellen wir eine einfache GET-Anfrage. Als wir das letzte Mal eine Anwendung für Gemüsespekulationen geschrieben haben, git clone https://FromJava@bitbucket.org/FromJava/speculation.git git clone git@bitbucket.org:FromJava/speculation.git Öffnen Sie die Anwendung und geben Sie ru.java ein Paket. Rush werden wir ein Controller-Paket erstellen (Controller aus dem MVC-Muster werden sich hier befinden). Erstellen Sie eine öffentliche Klasse ProductController
@RestController
@RequestMapping("/speculation")
public class ProductController {

}
Die Annotation @RestController zeigt Spring an, dass es sich um einen Rest-Controller handelt. @RequestMapping – Alle Controller-Methoden empfangen Anfragen mit einem URI, der mit der in den Anmerkungsklammern angegebenen Zeichenfolge („/spekulation“) beginnt. Wir schreiben die folgende Methode in die Klasse
@GetMapping("/simple")
public String simple(){
    return "Легкий GET Anfrageик";
}
Wir starten das Projekt, geben in die Browserzeile ein: http://localhost:8080/speculation/simple Wir erhalten die Antwort: Einfache GET-Anfrage . Ein paar Erklärungen: 1. Wir haben eine Klasse erstellt, die @RestController als Controller markiert und angegeben hat Pfad dazu @RequestMapping („/spekulation“) – diese Annotation ist optional; ohne sie beginnt der Pfad mit „/“. 2. Wir haben eine Methode erstellt, die bei Ausführung eine Zeichenfolge zurückgibt (Light GET-Anfrage), sie mit der Annotation @GetMapping markiert (dass diese Methode speziell für GET-Anfragen gedacht ist) und den Pfad zur Methode angegeben („/simple“). 3. Wir haben das Projekt (Server) auf Port 8080 gestartet und eine GET-Anfrage an die Adresse gestellt: server/controller/method (http://localhost:8080/speculation/simple) 4. Der öffentliche String simple(){ gibt zurück Die Methode „Easy GET requester“ funktionierte für diese Anfrage. } 5. Das Ergebnis der Methode wurde in Form des Strings „Easy GET request“ an den Browser zurückgegeben. Nun, es ist ein Anfang! Die faszinierendsten Artikel erwarten Sie. Die Beherrschung des oben vorgeschlagenen Materials wird mehr als einen Tag dauern. Hier besteht kein Grund zur Eile. Dieses Thema ist sehr wichtig und muss verstanden werden: „Iss den Elefanten in Teilen.“ Für das Training (nach Beherrschung des Materials): Vervollständigen Sie den Spekulationsanwendungscontroller . Erstellen Sie Methoden: 1) Suchen Sie nach einem Produkt anhand der ID. Verwenden Sie die Methode productService.findById(). Beispielausgabe
{
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": null,
        "salePrice": null
 }
Denken Sie nach der Implementierung der verbleibenden Controller-Methoden: „Warum sind die letzten beiden Felder null? Was muss getan werden, damit dort einige Werte vorhanden sind?“ 2) Alle Produkte auf der Storefront anzeigen: Um nach allen Produkten zu suchen, verwenden Sie die Methode productService.findAll(); Um die Verpackungs- und Markup-Felder auszufüllen, verwenden Sie productService.pack(); productService.makeMoney(); Die Ausgabe sollte ein JSON-Array enthalten, das Produkte auflistet, Beispiel:
[
    {
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 100
    },
    {
        "id": 2,
        "name": "Морковь",
        "purchasePrice": 14,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 70
    }
]
3) Hinzufügen eines neuen Produkts zur Datenbank (Produkt hinzufügen: Kohl und Großhandelspreis) Verwendung: productService.save(); Die Methode sollte den entsprechenden HTTP-Status zurückgeben. 4) Löschen eines Produkts anhand der ID. Implementieren Sie dazu zunächst in ProductService eine Methode mit productRepository.deleteById(); Und dann verwenden Sie es im Controller. Die Controller-Methode muss den entsprechenden HTTP-Status zurückgeben. 5) Änderungen des Produkts nach ID (Änderung des Großhandelspreises des Produkts und des Produktnamens) Dieser Vorgang wird komplizierter sein als die vorherigen. Zuerst müssen wir das Produkt, das wir ändern möchten, anhand der ID finden. Verwenden Sie productService.findById(); Ersetzen Sie dann im gefundenen Produkt (Objekt) den Wert der Felder durch den Wert der Felder des Objekts, das im Hauptteil der Put-Anfrage (json_object) empfangen wurde. Dies kann etwa so erfolgen:
найденный_товар = productService.findById(id);
найденный_товар.setName(ein Objekt_json.getName);
найденный_товар.setPurchasePrice(ein Objekt_json.getPurchasePrice);
Danach muss das geänderte Produkt gespeichert werden . productService.save(found_product); Die Methode sollte den entsprechenden HTTP-Status zurückgeben. Wenn Sie Probleme mit dieser Methode haben, können Sie nach „put request java“ googeln, das Internet hat noch niemand abgesagt.) Die Arbeit mit Controllern endet hier nicht, es liegen noch viele Themen vor uns ...
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION