JavaRush /Java Blogu /Random-AZ /Bahar qorxulu deyil. REST-ə nəzarət
Павел
Səviyyə

Bahar qorxulu deyil. REST-ə nəzarət

Qrupda dərc edilmişdir
MƏQALƏLƏR DÖVRÜNÜN MÜNDƏRİCASI Başqasının işindən təkrar istifadə etmək hər bir tərtibatçı üçün müqəddəs məsələdir 😌 Davam etmək üçün kompüter şəbəkəsinin əsaslarını başa düşməlisiniz, burada bir sıra məqalələr var . Əsas məqamlara diqqət yetirin: HTTP necə işləyir, GET, POST, PUT nədir, cavab statusları, MVC, JSON və seriallaşdırma haqqında ayrıca oxuyun . Təklif olunan nümunəni servletlərlə həyata keçirmək faydalı olacaq, bu, bütün ürəyinizlə yaz-bootu sevməyə kömək edəcəkdir. Bu seriyadan nümunə yaz-boot tətbiqi olduqca sadədir, lakin o, MVC-nin mahiyyətini anlamağa kömək edəcəkdir. Aşağıda daha maraqlı layihəyə keçid olacaq. REST və onun yazda istifadəsi ilə tanış olmaq üçün bu üç məqaləni oxuyun . Birinci məqalədə REST-in nə olduğunu oxuyacaqsınız. İkinci məqalə sorğu və cavablardan bəhs edir, Fidel yoldaşın şərhini mütləq oxuyun və nəzərə alın. Üçüncü məqalə Baharda tətbiqin praktiki nümunəsini təqdim edəcək, tətbiq yaratmaq üçün yanaşma çox da fərqli deyil (baxmaq və müqayisə etmək faydalıdır), həyata keçirin. HttpStatus, ResponseEntity <?> haqqında danışdıqları yerə diqqət yetirin (əgər <?> çaşdırıcıdırsa, onda Fəsil 13-ü oxuyun. "Java. Başlayanlar üçün Bələdçi", Herbert Şildtdən ümumiləşdirmələr), eyni məqalədə POSTMAN ( əlavə olaraq bu barədə qısa video ) POSTMAN quraşdırın, bütün xüsusiyyətlərə ehtiyacınız yoxdur, müxtəlif sorğuların necə yaradılacağına baxın. Nümunədə üçlü operatorlar var , unutmusunuzsa yaddaşınızı təzələyin. Nümunə məqalənin @Autowired istifadə edərək lobya inyeksiyasını necə həyata keçirdiyinə diqqət yetirin
@RestController
public class ClientController {

   private final ClientService clientService;

   @Autowired
   public ClientController(ClientService clientService) {
       this.clientService = clientService;
   }
}
Bilməlisiniz ki, Spring 4.3-dən başlayaraq, sinifdə yalnız bir konstruktor varsa, @Autowired annotasiyası buraxıla bilər. Çərçivə özü müəyyən edəcək ki, lobya konstruktorda həyata keçirilməlidir. Daha ətraflı bu mənbədə oxuya bilərsiniz . Və diqqətli olsanız, xidmət paketinin strukturu ilə bağlı bir sualınız olmalıdır , yəni: niyə ClientService interfeysiClientServiceImpl ictimai sinifi var - bu düzgün təcrübədir, sonra bunun nə üçün lazım olduğunu danışacağıq və biz istifadə edəcək. Məqalələrin hamısı budur. Oxumadan əvvəl yazaq. Necə deyərlər: "Kodsuz bir gün olmaz!" Başlanğıc nöqtəsi olaraq sadə GET sorğusu yaradaq. Keçən dəfə biz tərəvəz spekulyasiyası üçün ərizə yazmışdıq, git clone https://FromJava@bitbucket.org/FromJava/speculation.git git clone git@bitbucket.org:FromJava/speculation.git Proqramı açın və ru paketində. java.rush biz nəzarətçilər paketi yaradacağıq (MVC modelindən idarəedicilər burada yerləşəcək). Ümumi sinif ProductController sinfi yaradın
@RestController
@RequestMapping("/speculation")
public class ProductController {

}
@RestController annotasiyası Bahara bunun istirahət nəzarətçisi olduğunu göstərir. @RequestMapping - Bütün nəzarətçi metodları annotasiya mötərizələrində ("/speculation") göstərilən sətirlə başlayacaq URI ilə sorğuları qəbul edəcək. Sinifdə aşağıdakı metodu yazırıq
@GetMapping("/simple")
public String simple(){
    return "Легкий GET requestик";
}
Layihəni işə salırıq, brauzer xəttinə yazın: http://localhost:8080/speculation/simple Cavab alırıq: Asan GET sorğusu Bir neçə izahat: 1. Biz @RestController-i nəzarətçi kimi qeyd edən bir sinif yaratdıq. ona yol @RequestMapping ("/ spekulyasiya") – bu annotasiya isteğe bağlıdır; onsuz yol "/" ilə başlayacaq. 2. Biz icra etdikdə sətri qaytaran (Light GET sorğusu), onu @GetMapping annotasiyası ilə qeyd edən (bu metodun xüsusi olaraq GET sorğuları üçün olduğunu) və metodun yolunu göstərən ("/sadə") metod yaratdıq. 3. Layihəni (server) 8080 portunda işə saldıq və server/controller/method (http://localhost:8080/speculation/simple) ünvanına GET sorğusu göndərdik. 4. İctimai String simple(){ qayıt Bu sorğu üçün "Easy GET requester" metodu işlədi; } 5. Metodun nəticəsi “Easy GET request” sətri şəklində brauzerə qaytarıldı. Yaxşı, bu bir başlanğıcdır! Sizi ən maraqlı məqalələr gözləyir. Yuxarıda təklif olunan materialın mənimsənilməsi bir gündən çox vaxt aparacaq, burada tələsməyə ehtiyac yoxdur, bu mövzu çox vacibdir və başa düşülməlidir, "fili hissə-hissə yeyin". Təlim üçün (materialı mənimsədikdən sonra): Spekulyasiya tətbiqi nəzarətçisini tamamlayın . Metodlar yaradın: 1) İd ilə məhsul axtarın productService.findById() metodundan istifadə edin; Nümunə çıxışı
{
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": null,
        "salePrice": null
 }
Qalan nəzarətçi üsullarını tətbiq etdikdən sonra düşünün: "Son iki sahə niyə boşdur? Orada bəzi dəyərlərin olması üçün nə etmək lazımdır?" 2) Vitrində bütün məhsullara baxın: Bütün məhsulları axtarmaq üçün productService.findAll() metodundan istifadə edin; Qablaşdırma və işarələmə sahələrini doldurmaq üçün productService.pack(); productService.makeMoney(); Çıxışda məhsulların siyahısı JSON massivi olmalıdır, məsələn:
[
    {
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 100
    },
    {
        "id": 2,
        "name": "Морковь",
        "purchasePrice": 14,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 70
    }
]
3) Verilənlər bazasına yeni məhsulun əlavə edilməsi (məhsul əlavə edin: kələm və topdansatış alış qiyməti) İstifadə edin: productService.save(); Metod müvafiq Http statusunu qaytarmalıdır. 4) Məhsulun id ilə silinməsi Bunu etmək üçün əvvəlcə ProductService -də productRepository.deleteById (); Və sonra onu nəzarətçidə istifadə edin. Nəzarətçi metodu müvafiq Http statusunu qaytarmalıdır. 5) İd-yə görə məhsulun dəyişməsi (məhsulun topdansatış qiymətinin və məhsulun adının dəyişməsi) Bu əməliyyat əvvəlkilərdən daha mürəkkəb olacaq. Əvvəlcə id ilə dəyişdirmək istədiyimiz məhsulu tapmalıyıq ProductService.findById(); Sonra tapılan məhsulda (obyektdə) sahələrin dəyərini Put sorğusunun (json_object) gövdəsində qəbul edilən obyektin sahələrinin dəyəri ilə əvəz edin.Bunu belə etmək olar:
найденный_товар = productService.findById(id);
найденный_товар.setName(an object_json.getName);
найденный_товар.setPurchasePrice(an object_json.getPurchasePrice);
Bundan sonra dəyişdirilmiş məhsul saxlanmalıdır productService.save(found_product); Metod müvafiq Http statusunu qaytarmalıdır. Bu üsulla probleminiz varsa google-a "put request java" yaza bilərsiniz, hələ heç kim interneti ləğv etməyib) Kontrollerlərlə iş bununla bitmir, qarşıda hələ çox mövzular var...
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION