JavaRush /Blog Java /Random-MS /Musim bunga tidak menakutkan. Mengawal REHAT anda

Musim bunga tidak menakutkan. Mengawal REHAT anda

Diterbitkan dalam kumpulan
KANDUNGAN KITARAN ARTIKEL Menggunakan semula kerja orang lain adalah perkara suci bagi mana-mana pembangun 😌 Untuk meneruskan, anda perlu memahami asas rangkaian komputer, berikut adalah siri artikel . Beri perhatian kepada perkara utama: cara HTTP berfungsi, apa itu GET, POST, PUT, status respons, MVC, baca secara berasingan tentang JSON dan bersiri . Ia akan berguna untuk melaksanakan contoh yang dicadangkan dengan servlets, ini akan membantu anda menyukai spring-boot dengan sepenuh hati anda. Contoh aplikasi spring-boot dari siri ini agak mudah, tetapi ia akan membantu anda memahami intipati MVC. Di bawah akan ada pautan ke projek yang lebih menarik. Untuk membiasakan diri dengan REST dan penggunaannya pada Musim Bunga, baca tiga artikel ini . Dalam artikel pertama anda akan membaca apa itu REST. Artikel kedua bercakap tentang permintaan dan maklum balas, pastikan anda membaca dan mengambil perhatian komen Komrad Fidel. Artikel ketiga akan menawarkan contoh praktikal pelaksanaan dalam Spring, pendekatan untuk mencipta aplikasi tidak jauh berbeza (ia berguna untuk melihat dan membandingkan), melaksanakannya. Beri perhatian kepada tempat di mana mereka bercakap tentang HttpStatus, ResponseEntity <?> (jika <?> mengelirukan, kemudian baca Bab 13. Generalisasi daripada "Java. A Beginner's Guide", Herbert Shildt), dalam artikel yang sama membaca tentang POSTMAN ( tambahan video pendek mengenainya ) pasang POSTMAN, anda tidak memerlukan semua ciri, lihat cara membuat pelbagai pertanyaan. Terdapat operator ternary dalam contoh, segarkan semula ingatan anda jika anda terlupa. Beri perhatian kepada cara artikel contoh melaksanakan suntikan kacang menggunakan @Autowired
@RestController
public class ClientController {

   private final ClientService clientService;

   @Autowired
   public ClientController(ClientService clientService) {
       this.clientService = clientService;
   }
}
Anda harus sedar bahawa bermula dengan Spring 4.3, anotasi @Autowired boleh ditinggalkan jika kelas hanya mempunyai satu pembina. Rangka kerja itu sendiri akan mengetahui bahawa kacang perlu dilaksanakan dalam pembina. Anda boleh membaca lebih lanjut dalam sumber ini . Dan jika anda berhati-hati, maka anda harus mempunyai soalan tentang struktur pakej perkhidmatan , iaitu: mengapa terdapat antara muka ClientService dan kelas awam ClientServiceImpl - ini adalah amalan yang betul, kemudian, kita akan bercakap tentang mengapa ia diperlukan dan kami akan menggunakannya. Itu sahaja dengan artikel. Sebelum membaca, mari kita menulis. Seperti yang mereka katakan: "Bukan hari tanpa kod!" Sebagai titik permulaan, mari buat permintaan GET yang mudah. Kali terakhir kami menulis permohonan untuk spekulasi sayur-sayuran, git clone https://FromJava@bitbucket.org/FromJava/speculation.git git clone git@bitbucket.org:FromJava/speculation.git Buka aplikasi, dan dalam pakej ru. java. tergesa-gesa mari buat pakej pengawal (pengawal daripada corak MVC akan terletak di sini). Buat ProductController kelas awam kelas
@RestController
@RequestMapping("/speculation")
public class ProductController {

}
Anotasi @RestController menunjukkan kepada Spring bahawa ini ialah pengawal rehat. @RequestMapping - Semua kaedah pengawal akan menerima permintaan dengan URI yang akan bermula dengan rentetan yang ditentukan dalam kurungan anotasi ("/spekulasi"). Kami menulis kaedah berikut di dalam kelas
@GetMapping("/simple")
public String simple(){
    return "Легкий GET requestик";
}
Kami melancarkan projek itu, taip baris pelayar: http://localhost:8080/speculation/simple Kami menerima jawapan: Permintaan GET Mudah Beberapa penjelasan: 1. Kami mencipta kelas yang menandakan @RestController sebagai pengawal, menunjukkan laluan kepadanya @RequestMapping ("/ spekulasi") – anotasi ini adalah pilihan; tanpa itu, laluan akan bermula dengan "/". 2. Kami mencipta kaedah yang, apabila dilaksanakan, mengembalikan rentetan (permintaan GET Cahaya), menandakannya dengan anotasi @GetMapping (bahawa kaedah ini khusus untuk permintaan GET) dan menunjukkan laluan ke kaedah ("/simple") 3. Kami melancarkan projek (pelayan) pada port 8080, dan membuat permintaan GET ke alamat: server/controller/method (http://localhost:8080/speculation/simple) 4. The public String simple(){ return Kaedah "Easy GET requester" berfungsi untuk permintaan ini; } 5. Hasil kaedah telah dikembalikan kepada penyemak imbas dalam bentuk rentetan "Permintaan GET Mudah". Nah, ini adalah permulaan! Artikel yang paling menarik menanti anda. Menguasai bahan yang dicadangkan di atas akan mengambil masa lebih dari satu hari, tidak perlu tergesa-gesa di sini, topik ini sangat penting dan perlu difahami, "makan gajah itu sebahagian." Untuk latihan (selepas menguasai bahan): Lengkapkan pengawal aplikasi spekulasi . Cipta kaedah: 1) Cari produk mengikut id Gunakan kaedah productService.findById(); Contoh output
{
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": null,
        "salePrice": null
 }
Selepas melaksanakan kaedah pengawal yang tinggal, fikirkan: "Mengapa dua medan terakhir batal? Apa yang perlu dilakukan supaya terdapat beberapa nilai di sana?" 2) Lihat semua produk di etalase: Untuk mencari semua produk, gunakan kaedah productService.findAll(); Untuk mengisi medan pembungkusan dan penanda, gunakan productService.pack(); productService.makeMoney(); Output harus mengandungi produk penyenaraian tatasusunan JSON, contoh:
[
    {
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 100
    },
    {
        "id": 2,
        "name": "Морковь",
        "purchasePrice": 14,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 70
    }
]
3) Menambah produk baharu pada pangkalan data (tambah produk: kubis dan harga belian borong) Gunakan: productService.save(); Kaedah harus mengembalikan status Http yang sepadan. 4) Memadam produk dengan id Untuk melakukan ini, mula-mula laksanakan dalam ProductService kaedah yang mengandungi productRepository.deleteById(); Dan kemudian, gunakannya dalam pengawal. Kaedah pengawal mesti mengembalikan status Http yang sesuai. 5) Perubahan dalam produk mengikut id (perubahan harga borong produk dan nama produk) Operasi ini akan menjadi lebih rumit daripada yang sebelumnya. Mula-mula kita perlu mencari produk yang ingin kita ubah mengikut id Use productService.findById(); Kemudian, dalam produk yang ditemui (objek), gantikan nilai medan dengan nilai medan objek yang diterima dalam badan permintaan Put (json_object). Ini boleh dilakukan seperti ini:
найденный_товар = productService.findById(id);
найденный_товар.setName(an object_json.getName);
найденный_товар.setPurchasePrice(an object_json.getPurchasePrice);
Selepas ini, produk yang diubah mesti disimpan productService.save(found_product); Kaedah harus mengembalikan status Http yang sepadan. Jika anda mempunyai masalah dengan kaedah ini, anda boleh google "let request java", tiada siapa yang membatalkan Internet lagi) Bekerja dengan pengawal tidak berakhir di sana, masih terdapat banyak topik di hadapan...
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION