In diesem Tutorial zeigen wir Ihnen, wie Sie mit SpringMVC eine kurze REST-API in Java erstellen . Wir werden die Anweisungen GET und POST, die Operationen DELETE und PUT sehen. Es wäre für Sie praktisch, sie zum Üben zu verwenden. Bevor ich empfehle, Eclipse STS herunterzuladen, eine gute IDE, die im Frühjahr programmiert werden kann, wird das Erstellen unserer Projekte erheblich vereinfacht:
- . Wir haben einen Controller, der für die Bearbeitung der gestellten Anforderungen zuständig ist. Die Klasse, die als Controller fungiert, muss mit @RestController angegeben werden .
- Für jede URL müssen wir eine Methode implementieren. con la URL a la que se atiende y el método de la petición y además devolverá el objeto deseado. Jede Methode muss mit der Annotation @RequestMapping mit der URL, zu der sie gehört, und der Methode der Anforderung verknüpft sein. Außerdem wird das gewünschte Objekt zurückgegeben.
Nun sehen wir uns ein Beispiel an, in dem wir eine Person-Klasse und einen Controller für die PersonaController-Person haben.
Wir öffnen STS und geben ein neues Projekt ” Spring Project Starter “, wir konfigurieren die Optionen und den Namen und wir geben Weiter , ich lasse es, wie Sie in der folgenden Abbildung sehen können:
[/color] [color = rgb (169,169,169)] Klicken Sie auf das Bild, um es zu vergrößern [/ color]
Im nächsten Bildschirm, der erscheint, müssen Sie die Optionen auswählen, die wir verwenden werden. Wir lassen alles unberührt und geben Finish und wir haben das Projekt erstellt. Wir werden die folgende Struktur haben. (Beachten Sie, dass ich bereits die 2 Klassen erstellt habe, die wir werden verwenden, und das Capture ist nicht von STS):
dentro del paquete hay creada una clase ya y que contiene el siguiente código: Wir werden sehen, dass in src / main / java innerhalb des Pakets bereits eine Klasse erstellt wurde, die den folgenden Code enthält:
@SpringBootApplication public class ExampleApiApplication { public static void main (String [] args) { SpringApplication.run (Application.class, args); } }
Wir lassen diese Klasse so, wie sie ist. Sie hilft uns, unser Beispiel auszuführen. Gehen wir jetzt zur Klasse pom.xml und prüfen, ob wir den folgenden Code haben, wenn er nicht einfach hinzugefügt wird:
<parent> <groupId> org.springframework.boot </ groupId> <artifactId> Spring-Boot-Starter-Parent </ artifactId> <version> 1.3.3.RELEASE </ version> <relativePath /> </ parent> <Abhängigkeiten> <abhängigkeit> <groupId> org.springframework.boot </ groupId> <artifactId> Spring-Boot-Starter-Web </ artifactId> </ dependency> </ dependencies>
Schauen wir uns nun die Klassen an, die wir erstellen, wie sie aussehen.
Zuerst geben wir den Code ein und dann wird er erklärt.
öffentliche Klasse Perona { private long id = -1; private String name; privates int Alter; öffentliche Person () { } öffentliche Person (String name, int age) { super (); this.name = name; this.edad = alter; } public String getName () { return name; } public void setName (String name) { this.name = name; } public int getEdad () { Rückkehralter; } public void setEdad (int e) { alter = e; } public long getId () { return id; } public void setId (lange id) { this.id = id; } }
Diese Klasse ist nicht schwer zu verstehen. Das Einzige, was Sie wissen müssen, ist, dass wir das Get und Set jedes Attributs und auch den Konstruktor ohne Parameter benötigen, da sie vom Controller verwendet werden, sodass wir die Arbeit mit vielen Parametern vermeiden und Spring diese einspeisen wird und erstellen Sie das Objekt.
Wieder als erster Teil kommt der Code und dann die Erklärung.
@ RestController public class PersonaController { private Map <Long, Person> people = new ConcurrentHashMap <> (); private Long idUsed = 0; @RequestMapping (value = "/ people", method = RequestMethod.GET) Öffentliche Sammlung <Ankündigung> damePersonas () { return people.values (); } @RequestMapping (value = "/ people", method = RequestMethod.POST) @ResponseStatus (HttpStatus.CREATED) public Person addPersona (@RequestBody Persona p) { idUsed ++; p.setId (idUsado); personas.put (idUsado, p); return p; } @RequestMapping (value = "/ people / {id}", method = RequestMethod.GET) public ResponseEntity <Person> getPersona (@PathVariable lange ID) { Person p = personas.get (id); if (p! = null) return new ResponseEntity <> (p, HttpStatus.OK); return new ResponseEntity <> (HttpStatus.NOT_FOUND); } }
Da wir keine Datenbank verwenden werden, erstellen wir eine Map <id, Person>. Wenn wir eine Datenbank hätten, würde diese durch ihr Repository ersetzt, und die verwendete Variable wäre nicht erforderlich, aber es ist nicht das Ziel des Lernprogramms, BD hinzuzufügen.
vemos que tenemos también el método, por defecto es GET, por lo que en esos métodos no sería necesario añadirlo, pero no está de más. In der RequestMapping- Annotation sehen wir, dass wir auch die Methode haben. Standardmäßig ist dies GET. In diesen Methoden wäre es also nicht erforderlich, sie hinzuzufügen, aber sie tut nicht weh .
@ResponseStatus (HttpStatus.CREATED)
Es wird festgelegt, 201 als einen Antwortcode zurückzugeben. Es kann im Körper gesehen werden, wie jedes Mal, wenn es aufgerufen wird, die ID in einer erhöht wird, so dass es eindeutig ist und wir es der Person zuweisen, dann fügen wir es der Karte hinzu und schließlich ist der Antwortkörper der Funktion dieselbe Person.
ResponseEntity <Person>
Dies ist so, um ein OK und die Person, falls es existiert, oder ein NOT FOUND zurückzugeben . , ese parámetro tendrá el valor del {id} que ves en RequestMapping y es lo que ponemos en la URL, por ejemplo /personas/1 llama a esta función con el id en 1. Der Parameter hier ist mit @PathVariable beschriftet . Dieser Parameter hat den Wert von {id} , den Sie in RequestMapping sehen, und ist das, was wir in die URL einfügen, z. B. ruft / people / 1 diese Funktion mit der ID in 1 auf.
@ RestController @RequestMapping ("/ people") public class PersonaController { ... }
Wenn Sie dies tun, vermeiden Sie, dass sich Personen bei jeder Methode wiederholen, und Sie können einfach Folgendes eingeben:
@RequestMapping (value = "/", method = RequestMethod.GET)
Wenn es nur wenige Methoden gibt, lohnt es sich vielleicht nicht, aber für viele ist es sicherlich die beste Option.
Nun, wir haben diese kleine API bereits fertiggestellt.
Um das Projekt auszuführen, wählen Sie Ihr Projekt aus. In der Menüleiste sehen Sie ein weißes Dreieck innerhalb eines grünen Kreises. Klicken Sie auf das kleine schwarze Dreieck auf der rechten Seite. Gehen Sie zu Ausführen als und Klicken Sie auf Spring Boot App .
[/color] [color = # a9a9a9] Klicken Sie auf das Bild, um es zu vergrößern [/ color]
Wenn Sie nun das Beispiel erweitern möchten, empfehle ich, die Methoden zum Adressieren von PUT- und DELETE- Anfragen hinzuzufügen, müssen Sie die ID der zu ändernden Person kennen, damit Sie sie wie in der letzten Funktion erhalten und in PUT müssen Sie auch die Daten senden, wie wir es getan haben in der POST-Funktion.
Wenn Sie Ihre REST-API testen möchten, ohne einen Client programmieren zu müssen, der die Anforderungen stellt, die Sie für Postman verwenden können , handelt es sich um ein Google Chrome-Plugin:
Hier können Sie den gewünschten Anfragetyp auswählen, die zu sendenden Header und den zu sendenden Text eingeben, falls eine Authentifizierung erforderlich ist usw. Es ist ein sehr vollständiges Programm.
[/color] [color = # a9a9a9] Klicken Sie auf das Bild, um es zu vergrößern [/ color]
Beispiel: Eine Get-Anforderung, mit der alle Personen in der API auf localhost ausgeführt und Port 80 abgehört werden sollen: