JavaRush /Java Blog /Random-TL /Ang tagsibol ay hindi nakakatakot. Kinokontrol ang iyong ...

Ang tagsibol ay hindi nakakatakot. Kinokontrol ang iyong REST

Nai-publish sa grupo
NILALAMAN NG CYCLE NG MGA ARTIKULO Ang muling paggamit ng trabaho ng ibang tao ay isang sagradong bagay para sa sinumang developer 😌 Upang magpatuloy, kailangan mong maunawaan ang mga pangunahing kaalaman ng isang computer network, narito ang isang serye ng mga artikulo . Bigyang-pansin ang mga pangunahing punto: kung paano gumagana ang HTTP, kung ano ang GET, POST, PUT, mga status ng tugon, MVC, basahin nang hiwalay ang tungkol sa JSON at serialization . Magiging kapaki-pakinabang na ipatupad ang iminungkahing halimbawa sa mga servlet, makakatulong ito sa iyong mahalin ang spring-boot nang buong puso. Ang halimbawa ng spring-boot application mula sa seryeng ito ay medyo simple, ngunit makakatulong ito sa iyo na maunawaan ang kakanyahan ng MVC. Sa ibaba ay magkakaroon ng isang link sa isang mas kawili-wiling proyekto. Upang maging pamilyar sa REST at sa paggamit nito sa Spring, basahin ang tatlong artikulong ito . Sa unang artikulo ay mababasa mo kung ano ang REST. Ang ikalawang artikulo ay nagsasalita tungkol sa mga kahilingan at tugon, siguraduhing basahin at pansinin ang komento ni Kasamang Fidel. Ang ikatlong artikulo ay mag-aalok ng isang praktikal na halimbawa ng pagpapatupad sa Spring, ang diskarte sa paglikha ng isang application ay hindi gaanong naiiba (ito ay kapaki-pakinabang upang tumingin at ihambing), ipatupad ito. Bigyang-pansin ang lugar kung saan pinag-uusapan nila ang HttpStatus, ResponseEntity <?> (kung ang <?> ay nakakalito, basahin ang Kabanata 13. Mga Generalization mula sa "Java. A Beginner's Guide", Herbert Shildt), sa parehong artikulong binasa tungkol sa POSTMAN ( karagdagan maikling video tungkol dito ) i-install ang POSTMAN, hindi mo kailangan ang lahat ng mga tampok, tingnan kung paano lumikha ng iba't ibang mga query. May mga ternary operator sa halimbawa, i-refresh ang iyong memorya kung nakalimutan mo. Bigyang-pansin kung paano ipinapatupad ng halimbawang artikulo ang bean injection gamit ang @Autowired
@RestController
public class ClientController {

   private final ClientService clientService;

   @Autowired
   public ClientController(ClientService clientService) {
       this.clientService = clientService;
   }
}
Dapat mong malaman na simula sa Spring 4.3, ang @Autowired annotation ay maaaring tanggalin kung ang klase ay mayroon lamang isang constructor. Ang balangkas mismo ay malalaman na ang isang bean ay kailangang ipatupad sa konstruktor. Maaari mong basahin ang higit pa sa source na ito . At kung maingat ka, dapat kang magkaroon ng isang katanungan tungkol sa istraktura ng package ng serbisyo , katulad: bakit mayroong isang interface na ClientService at pampublikong klase na ClientServiceImpl - ito ay tamang kasanayan, mamaya, pag-uusapan natin kung bakit ito kinakailangan at kami gagamitin ito. Iyon lang ang kasama ng mga artikulo. Bago basahin, magsulat tayo. Tulad ng sinasabi nila: "Hindi isang araw na walang code!" Bilang panimulang punto, gumawa tayo ng simpleng kahilingan sa GET. Huling beses na nagsulat kami ng application para sa vegetable speculation, git clone https://FromJava@bitbucket.org/FromJava/speculation.git git clone git@bitbucket.org:FromJava/speculation.git Buksan ang application, at sa package ru. java.rush gagawa kami ng controllers package (matatagpuan dito ang mga controllers mula sa MVC pattern). Gumawa ng class public class ProductController
@RestController
@RequestMapping("/speculation")
public class ProductController {

}
Ang @RestController annotation ay nagpapahiwatig sa Spring na ito ay isang rest controller. @RequestMapping - Lahat ng paraan ng controller ay makakatanggap ng mga kahilingan na may URI na magsisimula sa string na tinukoy sa mga annotation bracket ("/speculation"). Isinulat namin ang sumusunod na pamamaraan sa klase
@GetMapping("/simple")
public String simple(){
    return "Легкий GET requestик";
}
Inilunsad namin ang proyekto, i-type ang linya ng browser: http://localhost:8080/speculation/simple Nakukuha namin ang sagot: Kahilingan ng Easy GET Ilang paliwanag: 1. Gumawa kami ng klase na minarkahan ang @RestController bilang controller, na nagsasaad ng landas patungo dito @RequestMapping ("/ haka-haka") – opsyonal ang anotasyong ito; kung wala ito, magsisimula ang landas sa "/". 2. Gumawa kami ng paraan na, kapag naisakatuparan, ay nagbabalik ng string (Light GET request), minarkahan ito ng @GetMapping annotation (na ang paraang ito ay partikular para sa mga kahilingan sa GET) at ipinahiwatig ang landas patungo sa pamamaraan ("/simple") 3. Inilunsad namin ang proyekto (server) sa port 8080, at gumawa ng kahilingan sa GET sa address: server/controller/method (http://localhost:8080/speculation/simple) 4. The public String simple(){ return Ang pamamaraang "Easy GET requester" ay gumana para sa kahilingang ito; } 5. Ang resulta ng pamamaraan ay ibinalik sa browser sa anyo ng string na "Easy GET request". Well, ito ay isang simula! Naghihintay sa iyo ang pinakakaakit-akit na mga artikulo. Ang pag-master ng materyal na iminungkahi sa itaas ay tatagal ng higit sa isang araw, hindi na kailangang magmadali dito, ang paksang ito ay napakahalaga at kailangang maunawaan, "kainin ang elepante sa mga bahagi." Para sa pagsasanay (pagkatapos mastering ang materyal): Kumpletuhin ang speculation application controller . Lumikha ng mga pamamaraan: 1) Maghanap ng isang produkto sa pamamagitan ng id Gamitin ang productService.findById() na pamamaraan; Halimbawang output
{
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": null,
        "salePrice": null
 }
Pagkatapos ipatupad ang natitirang mga pamamaraan ng controller, isipin: "Bakit walang bisa ang huling dalawang field? Ano ang kailangang gawin upang mayroong ilang mga halaga doon?" 2) Tingnan ang lahat ng produkto sa storefront: Upang hanapin ang lahat ng produkto, gamitin ang productService.findAll() na pamamaraan; Upang punan ang mga patlang ng packaging at markup, gamitin ang productService.pack(); productService.makeMoney(); Ang output ay dapat maglaman ng JSON array na naglilista ng mga produkto, halimbawa:
[
    {
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 100
    },
    {
        "id": 2,
        "name": "Морковь",
        "purchasePrice": 14,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 70
    }
]
3) Pagdaragdag ng bagong produkto sa database (magdagdag ng produkto: repolyo at pakyawan na presyo ng pagbili) Gamitin: productService.save(); Dapat ibalik ng pamamaraan ang kaukulang katayuan ng Http. 4) Pagtanggal ng produkto sa pamamagitan ng id Upang gawin ito, ipatupad muna sa ProductService ang isang paraan na naglalaman ng productRepository.deleteById(); At pagkatapos, gamitin ito sa controller. Dapat ibalik ng paraan ng controller ang naaangkop na status ng Http. 5) Mga pagbabago sa produkto ayon sa id (pagbabago sa pakyawan na presyo ng produkto at pangalan ng produkto) Ang operasyong ito ay magiging mas kumplikado kaysa sa mga nauna. Una kailangan nating hanapin ang produktong gusto nating baguhin sa pamamagitan ng id Gamitin ang productService.findById(); Pagkatapos, sa nahanap na produkto (object), palitan ang value ng mga field ng value ng mga field ng object na natanggap sa katawan ng Put request (json_object). Maaari itong gawin tulad nito:
найденный_товар = productService.findById(id);
найденный_товар.setName(an object_json.getName);
найденный_товар.setPurchasePrice(an object_json.getPurchasePrice);
Pagkatapos nito, dapat na i-save ang binagong produkto productService.save(found_product); Dapat ibalik ng pamamaraan ang kaukulang katayuan ng Http. Kung mayroon kang mga problema sa pamamaraang ito, maaari kang mag-google "maglagay ng kahilingan java", wala pang nagkansela ng Internet) Ang pagtatrabaho sa mga controllers ay hindi nagtatapos doon, marami pa ring mga paksa sa unahan...
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION