JavaRush /Java Blog /Random-TK /Bahar gorkunç däl. REST-i dolandyrmak

Bahar gorkunç däl. REST-i dolandyrmak

Toparda çap edildi
Makalalaryň sikliniň mazmuny Başga biriniň işini gaýtadan ulanmak islendik dörediji üçin mukaddes mesele on Dowam etmek üçin kompýuter torunyň esaslaryna düşünmeli, ine, birnäçe makala . Esasy nokatlara üns beriň: HTTP-iň işleýşi, GET, POST, PUT näme, jogap ýagdaýlary, MVC, JSON we serializasiýa barada aýratyn okaň . Teklip edilýän mysaly servletler bilen durmuşa geçirmek peýdaly bolar, bu size bahar paslyny bütin ýüregiňiz bilen söýmäge kömek eder. Bu seriýadaky bahar-boot programmasynyň mysaly gaty ýönekeý, ýöne MVC-iň manysyna düşünmäge kömek eder. Aşakda has gyzykly taslama baglanyşyk bolar. REST we Baharda ulanylyşy bilen tanyşmak üçin şu üç makalany okaň . Birinji makalada REST-iň nämedigini okarsyňyz. Ikinji makalada haýyşlar we jogaplar barada aýdylýar, ýoldaş Fideliň teswirini hökman okaň we üns beriň. Üçünji makala, Baharda durmuşa geçirmegiň amaly mysalyny hödürlär, programma döretmek çemeleşmesi kän bir tapawutly däl (seretmek we deňeşdirmek peýdaly), durmuşa geçiriň. POSTMAN hakda okalan şol makalada HttpStatus, ResponseEntity <?> (Eger <?> Bulaşyk bolsa, onda 13-nji bölümi okaň. 13-nji bölümi okaň). goşmaça gysga wideo ) POSTMAN guruň, size ähli aýratynlyklar gerek däl, dürli talaplary nädip döretmelidigini görüň. Mysal üçin üç taraplaýyn operatorlar bar , ýatdan çykaran bolsaňyz ýadyňyzy täzeläň. Mysal makalasynyň @Autowired ulanyp, noýba sanjymyny nähili ýerine ýetirýändigine üns beriň
@RestController
public class ClientController {

   private final ClientService clientService;

   @Autowired
   public ClientController(ClientService clientService) {
       this.clientService = clientService;
   }
}
Bahar 4.3-den başlap, synpda diňe bir konstruktor bar bolsa, @Autowired düşündirişini aýryp boljakdygyny bilmelisiňiz. Çarçuwanyň özi, noýbanyň konstruktorda durmuşa geçirilmelidigine düşüner. Bu çeşmede has köp okap bilersiňiz . Seresap bolsaňyz, hyzmat bukjasynyň gurluşy barada bir soragyňyz bolmaly, ýagny: näme üçin ClientService we jemgyýetçilik synpy ClientServiceImpl interfeýsi bar - bu dogry tejribe, soňundan näme üçin zerurdygyny gürleşeris we biz ulanar. Bularyň hemmesi makalalar bilen. Okamazdan ozal ýazalyň. Aýdyşlary ýaly: “Kodsyz bir gün däl!” Başlangyç nokady hökmünde, ýönekeý GET haýyşyny döredeliň. Geçen gezek gök önüm spekulýasiýasy üçin git ýazdyk, git klon https: //FromJava@bitbucket.org/FromJava/speculation.git git clone git@bitbucket.org: FromJava / spekulýasiýa.git Programmany açyň we ru bukjasynda. java. howlukma gözegçilik ediji bukjasyny dörederis (MVC nagşyndaky dolandyryjylar şu ýerde ýerleşer). “ProductController” jemgyýetçilik synpyny dörediň
@RestController
@RequestMapping("/speculation")
public class ProductController {

}
@RestController düşündirişi, Baharyň dynç alyş gözegçidigini görkezýär. @RequestMapping - controlhli gözegçilik ediji usullar, düşündiriş ýaýlarynda görkezilen setirden başlan URI bilen haýyşlary alar ("/ spekulýasiýa"). Aşakdaky usuly synpda ýazýarys
@GetMapping("/simple")
public String simple(){
    return "Легкий GET requestик";
}
Taslamany başlaýarys, brauzer setirine ýazyň: http: // localhost: 8080 / spekulýasiýa / ýönekeý Jogap alýarys: Easy GET haýyşy Birnäçe düşündiriş: 1. @RestController-i gözegçilik ediji hökmünde bellän synp döretdik, görkezilen oňa barýan ýol @RequestMapping ("/ spekulýasiýa") - bu düşündiriş islege bagly; onsuz ýol "/" bilen başlar. 2. Executederine ýetirilende bir setiri (Light GET haýyşy) gaýtaryp berýän, ony @GetMapping belligi bilen bellän (bu usulyň GET haýyşlary üçin niýetlenendigini) we usula barýan ýoly görkezýän usuly döretdik ("/ ýönekeý") 3. Taslamany (serwer) 8080-nji portda başladyk we adrese GET haýyşyny etdik: serwer / gözegçilikçi / usul (http: // localhost: 8080 / spekulýasiýa / ýönekeý) 4. Jemgyýetçilik setiri ýönekeý () {gaýdyp "Easy GET haýyş ediji" usuly bu haýyş üçin işledi; } 5. Usulyň netijesi, “Easy GET haýyşy” setiri görnüşinde brauzere gaýtaryldy. Bu başlangyç! Iň özüne çekiji makalalar size garaşýar. Aboveokarda teklip edilen materialy özleşdirmek bir günden köp wagt alar, bu ýere howlukmagyň zerurlygy ýok, bu mowzuk gaty möhüm we “pili bölekleýin iýiň”. Okuw üçin (materialy özleşdirenden soň): Spekulýasiýa programma gözegçisini dolduryň . Usullary dörediň: 1) id boýunça önüm gözlemek ÖnümService.findById () usulyny ulanyň; Mysal çykyşy
{
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": null,
        "salePrice": null
 }
Galan gözegçilik ediji usullary ýerine ýetireniňizden soň, pikir ediň: "Soňky iki meýdan näme üçin puja çykýar? Şol ýerde käbir gymmatlyklar bolmagy üçin näme etmeli?" 2) Dükanyň öňündäki ähli önümleri görmek: productshli önümleri gözlemek üçin önümService.findAll () usulyny ulanyň; Gaplamak we bellemek meýdanlaryny doldurmak üçin önümService.pack () ulanyň; önümService.makeMoney (); Çykyşda JSON massiw sanawy önümleri bolmaly, mysal üçin:
[
    {
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 100
    },
    {
        "id": 2,
        "name": "Морковь",
        "purchasePrice": 14,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 70
    }
]
3) Maglumat bazasyna täze önüm goşmak (önüm goşuň: kelem we lomaý satyn alyş bahasy) Ulanyş: önümService.save (); Usul degişli Http ýagdaýyny yzyna gaýtarmaly. 4) Önümi id bilen pozmak Munuň üçin ilki bilen ProductService -da önümRepository.deleteById () öz içine alýan usuly durmuşa geçiriň; Soň bolsa kontrolda ulanyň. Dolandyryjy usuly degişli Http ýagdaýyny yzyna gaýtarmaly. 5) Önümiň id boýunça üýtgemegi (önümiň lomaý bahasynyň we önümiň adynyň üýtgemegi) Bu amal öňkülerinden has çylşyrymly bolar. Ilki bilen id bilen üýtgetmek isleýän önümimizi tapmaly, önümService.findById () ulanyň; Soňra, tapylan önümde (obýektde) meýdanlaryň bahasyny Put haýyşynyň (json_object) mazmunynda alnan obýektiň meýdanlarynyň bahasy bilen çalyşyň. Bu şuňa meňzeş bir zat edip bolar:
найденный_товар = productService.findById(id);
найденный_товар.setName(an object_json.getName);
найденный_товар.setPurchasePrice(an object_json.getPurchasePrice);
Ondan soň üýtgedilen önüm, önümService.save (found_product) ýatda saklanmalydyr ; Usul degişli Http ýagdaýyny yzyna gaýtarmaly. Bu usul bilen baglanyşykly meseläňiz bar bolsa, google-dan “haýyş java goýup bilersiňiz”, entek hiç kim interneti ýatyrmady) Dolandyryjylar bilen işlemek bu ýerde gutarmaýar, öňde köp mowzuk bar ...
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION