Jak zrobić REST API za pomocą SpringMVC w Javie?

Spisie treści

Ten samouczek nauczy jak zrobić krótkie REST API w Javie, używając SpringMVC. Zobaczymy instrukcje GET i POST, operacje DELETE i PUT, wygodnie byłoby je wykonać dla praktyki. Przed rozpoczęciem polecam pobrać Eclipse STS, dobre IDE do programowania w Springu, znacznie ułatwia nam tworzenie naszych projektów:

POBIERZ ECLIPSE STS

NotatkaMusisz mieć zainstalowaną javę, jeśli wybierzesz lepszą wersję 1.8.

Kilka ogólnych rzeczy, o których należy pamiętać

  • Mamy kontrolera, który jest odpowiedzialny za obsługę tworzonych żądań, klasa działająca jako kontroler musi być odnotowana @RestController.
  • Dla każdego adresu URL musimy zaimplementować metodę. Każda metoda będzie musiała iść z adnotacją @RequestMapping z adresem URL, do którego jest obsługiwany, i metodą żądania, a także zwróci żądany obiekt.

Teraz zobaczymy przykład, w nim będziemy mieli klasę Person i kontroler dla osoby PersonController.

1. Rozpocznij projekt
Otwieramy STS i dajemy nowy projekt”Wiosenny Starter Projektu”, Konfigurujemy opcje oraz nazwę i dajemy Następny, zostawię to tak, jak widać na poniższym obrazku:

POWIĘKSZAĆ

[kolor = rgb (169,169,169)] Kliknij obraz, aby powiększyć [/ kolor]

Na kolejnym ekranie, który się pojawi, musimy wybrać opcje, z których będziemy korzystać, pozostawimy wszystko nietknięte i klikamy Skończyć i mamy już utworzony projekt, będziemy mieli następującą strukturę (Zauważ, że stworzyłem już 2 klasy, których będziemy używać, a przechwytywanie nie pochodzi z STS):

Zobaczymy to za src / główny / java Wewnątrz paczki jest już utworzona klasa i zawiera następujący kod:

 @SpringBootApplication public class ExampleApiApplication {publiczny statyczny void main (String [] args) {SpringApplication.run (Application.class, args); }} 
Pozostawiamy tę klasę bez zmian, pomaga nam to uruchomić nasz przykład. Teraz chodźmy na zajęcia pom.xml i sprawdzamy, czy mamy kod, jeśli nie, po prostu go dodajemy:
 org.springframework.boot spring-boot-starter-parent 1.3.3.RELEASE org.springframework.boot spring-boot-starter-web 
NotatkaByć może będziesz musiał zaktualizować swój projekt za pomocą maven podczas zapisywania tego pliku, w STS masz taką możliwość (ALT + F5).

Teraz zobaczymy klasy, które tworzymy, jak wyglądają.

2. Klasa osoby
Najpierw umieszczamy kod, a następnie wyjaśniamy.

 public class Perona {private long id = -1; prywatna nazwa ciągu; prywatny wiek; public Person () {} public Person (String name, int age) {super (); this.name = nazwa; this.wiek = wiek; } public String getName () {zwróć nazwę; } public void setName (String name) {this.name = name; } public int getAge () {wiek powrotu; } public void setAge (int e) {wiek = e; } public long getId () {identyfikator zwrotu; } public void setId (długi identyfikator) {this.id = id; }} 
Ta klasa nie jest trudna do zrozumienia, wystarczy wiedzieć, że potrzebujemy get i set każdego atrybutu, a także konstruktora bez parametrów, ponieważ będą one używane przez kontroler, więc unikniemy pracy z wieloma parametrami i Springiem wstrzyknie je i utworzy obiekt.

3. Klasa PersonaController
Ponownie jako pierwsza część to kod, a następnie wyjaśnienie.

 @RestController public class PersonController {private Map people = new ConcurrentHashMap (); prywatne Długie używaneID = 0; @RequestMapping (value = "/ people", method = RequestMethod.GET) public Collection damePeople () {return people.values ​​(); } @RequestMapping (wartość = "/ osób", metoda = RequestMethod.POST) @ResponseStatus (HttpStatus.CREATED) public Person addPersona (@RequestBody Person p) {idUsado ++; p.setId (idUsado); people.put (idUsado, p); powrót p; } @RequestMapping (value = "/ people / {id}", method = RequestMethod.GET) public ResponseEntity getPersona (@PathVariable long id) {Person p = people.get (id); if (p! = null) zwróć nową ResponseEntity (p, HttpStatus.OK); zwrócić nową ResponseEntity (HttpStatus.NOT_FOUND); }}
Co nie będziemy korzystać z bazy danych Tworzymy mapę, gdybyśmy mieli bazę danych, zostałaby ona zastąpiona jej repozytorium, a zmienna idUsado nie byłaby potrzebna, ale dodanie bazy danych nie jest celem samouczka.
Wewnątrz adnotacji Mapowanie żądań Widzimy, że też mamy metodę, domyślnie jest to GET, więc w tych metodach nie trzeba by jej dodawać, ale to nie boli.

Mamy 3 metody
daj mi ludziTo, co zrobi, to zwróci wszystkie osoby, które mamy na naszej mapie (ludzie.wartości()). Nie ma większych komplikacji.

dodaj osobęSłuży do dodania osoby do naszej kolekcji, widać, że parametr, który posiadamy, jest oznaczony adnotacją @RequestBody, to to, co otrzymujemy od klienta (treść żądania). Adnotacja

 @ResponseStatus (HttpStatus.CREATED)
Jest ustawiony tak, aby zwracał 201 jako kod odpowiedzi. W ciele widać, jak za każdym razem, gdy jest ono wywoływane, id zwiększa się o jeden, aby było unikalne i przypisujemy go do osoby, następnie dodajemy do mapy i na końcu treść odpowiedzi funkcji jest taka sama osoba.

getPersonOsoba, której dotyczy wniosek, zostanie nam zwrócona za pośrednictwem identyfikatora. Tutaj mamy, że funkcja zwraca

 Jednostka odpowiedzi
To jest tak, aby zwrócić a w porządku i osoba w przypadku, gdy istnieje lub NIE ZNALEZIONO. Parametr tutaj jest oznaczony @ścieżkazmienna, parametr ten będzie miał wartość {ID} które widzisz w RequestMapping i jest tym, co umieściliśmy w adresie URL, na przykład / people / 1 wywołuje tę funkcję z identyfikatorem w 1.

NotatkaMożesz umieścić adnotację RequestMapping tuż nad klasą, jak pokazano poniżej:

 @RestController @RequestMapping ("/ people") public class PersonaController {…}
Jeśli to zrobisz, unikniesz powtarzania osób w każdej metodzie i możesz po prostu umieścić:
 @RequestMapping (wartość = "/", metoda = RequestMethod.GET) 
Jeśli jest kilka metod, może nie warto, ale dla wielu jest to z pewnością najlepsza opcja.

Cóż, skończyliśmy to małe API.

4. Jak prowadzić projekt
Aby uruchomić projekt, wybierz swój projekt, na pasku menu zobaczysz biały trójkąt w zielonym kółku (zwykły bieg w elclipse), kliknij mały czarny trójkąt po prawej stronie, przejdź do Runy i kliknij Aplikacja Spring Boot.

POWIĘKSZAĆ

[kolor = # a9a9a9] Kliknij obraz, aby powiększyć [/ kolor]

Teraz, jeśli chcesz rozszerzyć przykład, polecam dodać metody obsługi żądań UMIEŚCIĆ Tak KASOWAĆ, będziesz musiał znać id osoby do modyfikacji, więc otrzymasz go tak jak w ostatniej funkcji, a w PUT będziesz musiał również przesłać dane, tak jak zrobiliśmy to w funkcji POST.

Jeśli chcesz przetestuj swój REST API bez konieczności programowania klienta do składania wniosków możesz użyć listonosza, jest to wtyczka Google Chrome:

Tutaj możesz wybrać rodzaj żądania, wypełnić nagłówki i treść, które mają zostać wysłane, jeśli wymaga uwierzytelnienia itp. Jest to bardzo kompletny program.

POWIĘKSZAĆ

[kolor = # a9a9a9] Kliknij obraz, aby powiększyć [/ kolor]

Na przykład żądanie get, aby uzyskać wszystkie osoby w API działające na hoście lokalnym i nasłuchujące na porcie 80:

Podobał Ci się i pomógł ten samouczek?Możesz nagrodzić autora, naciskając ten przycisk, aby dać mu pozytywny punkt

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave