JavaRush /Blog Java /Random-PL /Wiosna nie jest straszna. Kontrolowanie odpoczynku
Павел
Poziom 11

Wiosna nie jest straszna. Kontrolowanie odpoczynku

Opublikowano w grupie Random-PL
TREŚĆ CYKLU ARTYKUŁÓW Ponowne wykorzystanie cudzej pracy to święta sprawa dla każdego programisty 😌 Aby ruszyć dalej trzeba zrozumieć podstawy sieci komputerowej, oto cykl artykułów . Zwróć uwagę na główne punkty: jak działa HTTP, co to jest GET, POST, PUT, statusy odpowiedzi, MVC, przeczytaj osobno o JSON i serializacji . Przydatne będzie zaimplementowanie proponowanego przykładu z serwletami, dzięki temu pokochasz spring-boot całym sercem. Przykładowa aplikacja spring-boot z tej serii jest dość prosta, ale pomoże Ci zrozumieć istotę MVC. Poniżej będzie link do ciekawszego projektu. Aby zapoznać się z REST i jego wykorzystaniem w Springu, przeczytaj te trzy artykuły . W pierwszym artykule przeczytasz czym jest REST. Drugi artykuł mówi o prośbach i odpowiedziach, koniecznie przeczytajcie i weźcie pod uwagę komentarz towarzysza Fidela. W trzecim artykule przedstawimy praktyczny przykład wdrożenia na wiosnę, podejście do tworzenia aplikacji nie różni się zbytnio (warto spojrzeć i porównać), zaimplementuj ją. Zwróć uwagę na miejsce, w którym jest mowa o HttpStatus, ResponseEntity <?> (jeśli <?> jest mylące, to przeczytaj Rozdział 13. Uogólnienia z „Java. A Beginner's Guide”, Herbert Shildt), w tym samym artykule przeczytaj o POSTMAN ( dodatkowo krótki film na ten temat ) zainstaluj POSTMANA, nie potrzebujesz wszystkich funkcji, zobacz jak tworzyć różne zapytania. W przykładzie znajdują się operatory trójskładnikowe , odśwież pamięć, jeśli zapomniałeś. Zwróć uwagę na sposób, w jaki przykładowy artykuł implementuje wstrzykiwanie fasoli przy użyciu @Autowired
@RestController
public class ClientController {

   private final ClientService clientService;

   @Autowired
   public ClientController(ClientService clientService) {
       this.clientService = clientService;
   }
}
Należy pamiętać, że począwszy od Spring 4.3 adnotację @Autowired można pominąć, jeśli klasa ma tylko jednego konstruktora. Sam framework zorientuje się, że w konstruktorze należy zaimplementować komponent bean. Więcej możesz przeczytać w tym źródle . A jeśli jesteś ostrożny, powinieneś zadać pytanie dotyczące struktury pakietu usług , a mianowicie: dlaczego istnieje interfejs ClientService i publiczna klasa ClientServiceImpl - to jest poprawna praktyka, później porozmawiamy o tym, dlaczego jest to potrzebne i my użyje go. To wszystko, jeśli chodzi o artykuły. Zanim przeczytasz, napiszmy. Jak to mówią: „Nie ma dnia bez kodu!” Na początek utwórzmy proste żądanie GET. Ostatnim razem napisaliśmy aplikację do spekulacji warzywami, git clone https://FromJava@bitbucket.org/FromJava/speculation.git git clone git@bitbucket.org:FromJava/speculation.git Otwórz aplikację, a w pakiecie ru. java.rush utwórzmy pakiet kontrolerów (tutaj będą znajdować się kontrolery ze wzorca MVC). Utwórz klasę publiczną ProductController
@RestController
@RequestMapping("/speculation")
public class ProductController {

}
Adnotacja @RestController wskazuje Springowi, że jest to kontroler odpoczynku. @RequestMapping — wszystkie metody kontrolera będą odbierać żądania z identyfikatorem URI rozpoczynającym się od ciągu znaków określonego w nawiasach adnotacji („/speculation”). W klasie piszemy następującą metodę
@GetMapping("/simple")
public String simple(){
    return "Легкий GET wniosekик";
}
Uruchamiamy projekt, w wierszu przeglądarki wpisujemy: http://localhost:8080/speculation/simple Otrzymujemy odpowiedź: Żądanie Easy GET Kilka wyjaśnień: 1. Stworzyliśmy klasę, która jako kontroler oznaczyła @RestController, wskazała ścieżka do niego @RequestMapping („/ spekulacja”) – ta adnotacja jest opcjonalna; bez niej ścieżka będzie zaczynać się od „/”. 2. Stworzyliśmy metodę, która po wykonaniu zwraca ciąg znaków (żądanie Light GET), oznaczyliśmy go adnotacją @GetMapping (że ta metoda jest przeznaczona specjalnie dla żądań GET) i wskazano ścieżkę do metody („/simple”) 3. Uruchomiliśmy projekt (serwer) na porcie 8080 i złożyliśmy żądanie GET na adres: serwer/kontroler/method (http://localhost:8080/speculation/simple) 4. Publiczny String simple(){ return W przypadku tego żądania zadziałała metoda „Easy GET requester”; } 5. Wynik metody został zwrócony do przeglądarki w postaci ciągu znaków „Żądanie Easy GET”. Cóż, to początek! Najciekawsze artykuły czekają na Ciebie. Opanowanie zaproponowanego powyżej materiału zajmie więcej niż jeden dzień, nie ma się co spieszyć, ten temat jest bardzo ważny i trzeba go zrozumieć, „zjedz słonia na części”. Na przeszkolenie (po opanowaniu materiału): Uzupełnij spekulacje aplikacji kontrolera . Utwórz metody: 1) Wyszukaj produkt po id. Skorzystaj z metody ProductService.findById(); Przykładowe wyjście
{
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": null,
        "salePrice": null
 }
Po zaimplementowaniu pozostałych metod kontrolera zastanów się: "Dlaczego dwa ostatnie pola mają wartość null? Co należy zrobić, aby były tam jakieś wartości?" 2) Zobacz wszystkie produkty na stronie sklepu: Aby wyszukać wszystkie produkty, użyj metody ProductService.findAll(); Aby wypełnić pola pakowania i znaczników, użyj produktuService.pack(); usługaproduktu.makeMoney(); Dane wyjściowe powinny zawierać tablicę JSON zawierającą listę produktów, na przykład:
[
    {
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 100
    },
    {
        "id": 2,
        "name": "Морковь",
        "purchasePrice": 14,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 70
    }
]
3) Dodanie nowego produktu do bazy (dodaj produkt: kapusta i cena zakupu hurtowego) Zastosowanie: ProductService.save(); Metoda powinna zwrócić odpowiedni status HTTP. 4) Usuwanie produktu po id W tym celu należy najpierw zaimplementować w ProductService metodę zawierającą produktRepository.deleteById(); A następnie użyj go w kontrolerze. Metoda kontrolera musi zwracać odpowiedni stan HTTP. 5) Zmiany produktu po id (zmiana ceny hurtowej produktu i nazwy produktu) Ta operacja będzie bardziej skomplikowana niż poprzednie. Najpierw musimy znaleźć produkt, który chcemy zmienić według identyfikatora. Użyj produktuService.findById(); Następnie w znalezionym produkcie (obiektie) zamień wartość pól na wartość pól obiektu otrzymaną w treści żądania Put (json_object). Można to zrobić mniej więcej tak:
найденный_товар = productService.findById(id);
найденный_товар.setName(obiekt_json.getName);
найденный_товар.setPurchasePrice(obiekt_json.getPurchasePrice);
Następnie zmieniony produkt musi zostać zapisany.productService.save (found_product); Metoda powinna zwrócić odpowiedni status HTTP. Jeśli masz problemy z tą metodą, możesz wpisać w Google „umieść żądanie Java”, nikt jeszcze nie anulował Internetu) Praca ze sterownikami na tym się nie kończy, jest jeszcze wiele tematów przed nami…
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION