Saya relatif baru dalam hal keterampilan pengembangan web Java. Saya memiliki proyek yang menurut saya akan menjadi kandidat yang bagus untuk layanan RESTful dari sedikit yang saya mengerti tentang API. Saya mencoba masuk ke detail bagaimana ini seharusnya disusun, tetapi tidak benar-benar mendapatkan tempat dalam hal pencarian google dan membaca materi yang sudah saya miliki. Saya berharap posting ini akan menghasilkan beberapa validasi dan / atau pengalihan dalam hal pengetahuan dan asumsi saya tentang topik ini.
Asumsi saya saat ini adalah bahwa layanan RESTful saya akan memiliki struktur berikut:
- Data Database (SQL).
- ORM (Saya menggunakan ORM yang relatif tidak populer yang disebut CPO, tetapi ini hanya akan diganti dengan Hibernate dengan kebanyakan orang).
- Kelas manajer Java dengan metode yang berbicara dengan ORM untuk mendapatkan data
- Kelas / kelas pengontrol Java yang menangani pemetaan permintaan dan penggunaan
@ResponseBody
untuk mengarahkan / menangani URL dan tindakan bagaimana data ditangani melalui kata kerja HTTP ( http://mysite.com/computers/dell mungkinGET
diminta dengan kata "dell" dalam URL menjadi parameter yang akan mengembalikan array informasi JSON tentang komputer Dell). - Layanan ini harus dibuat dengan Spring Boot, atau entah bagaimana dapat berdiri sendiri dan terlepas dari aplikasi lain.
Sekarang dengan asumsi bahwa di atas sudah benar, maka saya akan memiliki (pada tingkat yang sangat mendasar) layanan yang tenang yang dapat digunakan aplikasi apa pun untuk menggunakan dan menggunakan data.
Jadi katakan saya kemudian memiliki aplikasi web saya. Katakanlah saya membuat aplikasi web tentang informasi perangkat keras komputer, dan saya menggunakan Spring untuk membangun aplikasi web ini. Inilah asumsi saya:
- Saya akan memiliki banyak pandangan sebagai JSP, dengan JSP yang menyertakan HTML, CSS, dan JavaScript. JavaScript akan menangani panggilan AJAX ke pengontrol aplikasi ini sesuai kebutuhan (di bawah).
- Aplikasi web ini juga akan memiliki pengontrol sendiri untuk menangani permintaan dan perutean URL aplikasi, dan pengontrol kemudian akan menggunakan, katakanlah,
ModelAndView
objek atau sesuatu di sepanjang baris itu untuk "berbicara dengan" pengontrol layanan RESTful, memperoleh data apa pun yang sedang dikirimkan , sampaikan data itu kembali ke tampilan (Javascript, JSP, dll ...) untuk ditampilkan.
Apakah saya di jalur yang benar, di sini? Saya mengerti bahwa ada juga aspek otentikasi untuk layanan RESTful, tapi saya belum ada secara konseptual (dan proyek saya akan digunakan dalam jaringan pribadi sehingga keamanan bukanlah prioritas pada saat ini).
Setiap wawasan, kritik, pengetahuan, umpan balik, atau klarifikasi sangat dihargai.
@Autowire
akan bekerja sebagai hasilnya.Sementara setuju dengan sebagian besar jawaban dari @ Minjun.Y, saya pikir saya akan mengambil pendekatan yang sedikit berbeda dengan REST dan lapisan halaman Web. Dari bacaan saya atas pertanyaan Anda, saya pikir Anda ingin mengekspos antarmuka web dan antarmuka REST ke dunia luar. Ada sedikit yang bisa diperoleh dengan membaca POJO dari database, mengubah data menjadi JSON, kemudian kembali ke POJO untuk konsumsi oleh JSP.
Saya lebih suka membuat lapisan layanan melakukan semua pekerjaan nyata, dan menambahkan lapisan "presentasi" yang terpisah untuk aplikasi web (JSP) dan pengendali REST. Ini akan menjadi pengontrol terpisah, di mana layanan akan disuntikkan. Atau, gunakan hanya layanan REST dan bangun semua logika presentasi di sisi klien sesuai jawaban sebelumnya.
Juga, saya bukan penggemar modul Maven. Cara toko Java kami akan mengimplementasikan proyek Anda adalah dengan membuat rilis reguler dari lapisan layanan, kemudian membuat lapisan presentasi bergantung pada rilis terbaru. Ada ruang untuk diskusi tentang ini, tetapi tentu saja berhasil bagi kita. Kami akan memiliki antarmuka web dan antarmuka REST sebagai proyek Maven terpisah, karena mereka biasanya hidup dalam file perang yang berbeda dan karenanya memerlukan penyebaran yang terpisah.
BTW, saya akan memperkuat kebutuhan untuk bangun dengan kecepatan dengan alat manajemen pembangunan dan ketergantungan. Setelah proyek Anda tumbuh ke ukuran yang masuk akal, Anda membutuhkannya. Alat gratis seperti Maven, Jenkins dan Nexus membuat manajemen rilis tidak terlalu menjadi masalah.
sumber