JavaRush /Java Blog /Random-ID /Musim semi tidak menakutkan. Mengontrol REST Anda
Павел
Level 11

Musim semi tidak menakutkan. Mengontrol REST Anda

Dipublikasikan di grup Random-ID
ISI SIKLUS ARTIKEL Menggunakan kembali karya orang lain adalah hal yang sakral bagi pengembang mana pun 😌 Untuk melanjutkan, Anda perlu memahami dasar-dasar jaringan komputer, berikut rangkaian artikelnya . Perhatikan poin utama: cara kerja HTTP, apa itu GET, POST, PUT, status respon, MVC, baca terpisah tentang JSON dan serialisasi . Akan berguna untuk mengimplementasikan contoh yang diusulkan dengan servlet, ini akan membantu Anda menyukai spring-boot dengan sepenuh hati. Contoh aplikasi spring-boot dari seri ini cukup sederhana, namun akan membantu Anda memahami esensi MVC. Di bawah ini akan ada link ke proyek yang lebih menarik. Untuk mengenal REST dan penggunaannya di Spring, bacalah tiga artikel ini . Di artikel pertama Anda akan membaca apa itu REST. Artikel kedua membahas tentang permintaan dan tanggapan, pastikan untuk membaca dan mencatat komentar Kamerad Fidel. Artikel ketiga akan menawarkan contoh praktis implementasi di Spring, pendekatan untuk membuat aplikasi tidak jauh berbeda (berguna untuk melihat dan membandingkan), mengimplementasikannya. Perhatikan tempat mereka berbicara tentang HttpStatus, ResponseEntity <?> (jika <?> membingungkan, bacalah Bab 13. Generalisasi dari "Java. A Beginner's Guide", Herbert Shildt), di artikel yang sama baca tentang POSTMAN ( tambahan video singkat tentangnya ) instal POSTMAN, Anda tidak memerlukan semua fitur, lihat cara membuat berbagai kueri. Ada operator ternary dalam contoh ini, segarkan ingatan Anda jika Anda lupa. Perhatikan bagaimana contoh artikel mengimplementasikan bean injection menggunakan @Autowired
@RestController
public class ClientController {

   private final ClientService clientService;

   @Autowired
   public ClientController(ClientService clientService) {
       this.clientService = clientService;
   }
}
Anda harus menyadari bahwa mulai Spring 4.3, anotasi @Autowired dapat dihilangkan jika kelas hanya memiliki satu konstruktor. Kerangka kerja itu sendiri akan menentukan bahwa suatu kacang perlu diimplementasikan di konstruktor. Anda dapat membaca lebih lanjut di sumber ini . Dan jika Anda berhati-hati, maka Anda harus memiliki pertanyaan tentang struktur paket layanan , yaitu: mengapa ada antarmuka ClientService dan ClientServiceImpl kelas publik - ini adalah praktik yang benar, nanti kita akan membicarakan mengapa itu diperlukan dan kami akan menggunakannya. Itu saja dengan artikelnya. Sebelum membaca, mari menulis. Seperti kata pepatah: “Tidak ada hari tanpa kode!” Sebagai titik awal, mari buat permintaan GET sederhana. Terakhir kali kami menulis aplikasi untuk spekulasi sayuran, git clone https://FromJava@bitbucket.org/FromJava/speculation.git git clone git@bitbucket.org:FromJava/speculation.git Buka aplikasinya, dan di ru.java package.rush kita akan membuat paket controllers (pengontrol dari pola MVC akan ditempatkan di sini). Buat ProductController kelas publik
@RestController
@RequestMapping("/speculation")
public class ProductController {

}
Anotasi @RestController menunjukkan kepada Spring bahwa ini adalah pengontrol istirahat. @RequestMapping - Semua metode pengontrol akan menerima permintaan dengan URI yang akan dimulai dengan string yang ditentukan dalam tanda kurung anotasi ("/ spekulasi"). Kami menulis metode berikut di kelas
@GetMapping("/simple")
public String simple(){
    return "Легкий GET requestик";
}
Kami meluncurkan proyek, ketik di baris browser: http://localhost:8080/speculation/simple Kami menerima jawabannya: Permintaan Easy GET Beberapa penjelasan: 1. Kami membuat kelas yang menandai @RestController sebagai pengontrol, menunjukkan jalur ke sana @RequestMapping ("/ spekulasi") – anotasi ini bersifat opsional; tanpanya, jalur akan dimulai dengan "/". 2. Kami membuat metode yang, ketika dijalankan, mengembalikan string (permintaan GET Ringan), menandainya dengan anotasi @GetMapping (bahwa metode ini khusus untuk permintaan GET) dan menunjukkan jalur ke metode ("/ sederhana") 3. Kami meluncurkan proyek (server) pada port 8080, dan membuat permintaan GET ke alamat: server/controller/method (http://localhost:8080/speculation/simple) 4. Public String simple(){ return Metode "Pemohon GET Mudah" berfungsi untuk permintaan ini; } 5. Hasil dari metode dikembalikan ke browser dalam bentuk string “Easy GET request”. Ya, ini permulaan! Artikel paling menarik menanti Anda. Menguasai materi yang diajukan di atas akan memakan waktu lebih dari satu hari, tidak perlu terburu-buru disini, topik ini sangat penting dan perlu dipahami, “makan gajah sebagian”. Untuk pelatihan (setelah menguasai materi): Lengkapi pengontrol aplikasi spekulasi . Buat metode: 1) Cari produk berdasarkan id Gunakan metode productService.findById(); Contoh keluaran
{
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": null,
        "salePrice": null
 }
Setelah menerapkan metode pengontrol lainnya, pikirkan: "Mengapa dua bidang terakhir nol? Apa yang perlu dilakukan agar ada beberapa nilai di sana?" 2) Lihat semua produk di etalase: Untuk mencari semua produk, gunakan metode productService.findAll(); Untuk mengisi kolom pengemasan dan markup, gunakan productService.pack(); produkLayanan.makeMoney(); Outputnya harus berisi produk daftar array JSON, contoh:
[
    {
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 100
    },
    {
        "id": 2,
        "name": "Морковь",
        "purchasePrice": 14,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 70
    }
]
3) Menambahkan produk baru ke database (tambahkan produk: kubis dan harga pembelian grosir) Gunakan: productService.save(); Metode ini harus mengembalikan status Http yang sesuai. 4) Menghapus produk berdasarkan id Untuk melakukan ini, pertama-tama terapkan di ProductService metode yang berisi productRepository.deleteById(); Dan kemudian, gunakan di pengontrol. Metode pengontrol harus mengembalikan status Http yang sesuai. 5) Perubahan produk berdasarkan id (perubahan harga grosir produk dan nama produk) Operasi ini akan lebih rumit dari yang sebelumnya. Pertama kita perlu mencari produk yang ingin kita ubah berdasarkan id Use productService.findById(); Kemudian, pada produk (objek) yang ditemukan, ganti nilai bidang dengan nilai bidang objek yang diterima di badan permintaan Put (json_object). Ini dapat dilakukan seperti ini:
найденный_товар = productService.findById(id);
найденный_товар.setName(an object_json.getName);
найденный_товар.setPurchasePrice(an object_json.getPurchasePrice);
Setelah ini, produk yang diubah harus disimpan productService.save(found_product); Metode ini harus mengembalikan status Http yang sesuai. Jika Anda memiliki masalah dengan metode ini, Anda dapat google "memasukkan permintaan java", belum ada yang membatalkan Internet) Bekerja dengan pengontrol tidak berakhir di situ, masih banyak topik di depan...
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION