Sesuai permintaan, pendekatan seperti REST sederhana. Ini bekerja hampir sama dengan cara kerja solusi Codemwncis tetapi menggunakan header Terima untuk negosiasi konten. Pertama file rute:
GET /user/{id} Application.user
POST /user/ Application.createUser
PUT /user/{id} Application.updateUser
DELETE /user/{id} Application.deleteUser
Anda tidak menentukan tipe konten apa pun di sini. IMHO hanya diperlukan jika Anda ingin memiliki URI "khusus" untuk sumber daya tertentu. Seperti mendeklarasikan rute /users/feed/
untuk selalu kembali di Atom / RSS.
Pengontrol Aplikasi terlihat seperti ini:
public static void createUser(User newUser) {
newUser.save();
user(newUser.id);
}
public static void updateUser(Long id, User user) {
User dbUser = User.findById(id);
dbUser.updateDetails(user); // some model logic you would write to do a safe merge
dbUser.save();
user(id);
}
public static void deleteUser(Long id) {
User.findById(id).delete();
renderText("success");
}
public static void user(Long id) {
User user = User.findById(id)
render(user);
}
Seperti yang Anda lihat, saya hanya menghapus metode getUserJSON dan mengganti nama metode getUser. Untuk tipe konten yang berbeda untuk bekerja, Anda sekarang harus membuat beberapa templat. Satu untuk setiap jenis konten yang diinginkan. Sebagai contoh:
user.xml:
<users>
<user>
<name>${user.name}</name>
. . .
</user>
</users>
user.json:
{
"name": "${user.name}",
"id": "${user.id}",
. . .
}
user.html:
<html>...</html>
Pendekatan ini memberikan browser selalu tampilan HTML, karena semua browser mengirim jenis konten teks / html di header Terima mereka. Semua klien lain (mungkin beberapa permintaan AJAX berbasis JavaScript) dapat menentukan jenis konten yang mereka inginkan. Menggunakan metode jQuerys ajax () Anda dapat melakukan hal berikut:
$.ajax({
url: @{Application.user(1)},
dataType: json,
success: function(data) {
. . .
}
});
Yang akan memberi Anda detail tentang Pengguna dengan ID 1 dalam format JSON. Play saat ini mendukung HTML, JSON dan XML secara native, tetapi Anda dapat dengan mudah menggunakan jenis yang berbeda dengan mengikuti dokumentasi resmi atau menggunakan modul negosiasi konten .
Jika Anda menggunakan Eclipse untuk pengembangan, saya sarankan menggunakan plugin klien REST yang memungkinkan Anda menguji rute dan jenis konten yang sesuai.
Ini masih pertanyaan populer, tetapi jawaban yang dipilih terbanyak tidak mutakhir dengan versi permainan saat ini. Berikut adalah contoh REST yang berfungsi dengan play 2.2.1:
conf / routes:
app / controllers / UserController.java:
sumber
Gunakan Play! untuk melakukan semuanya. Menulis layanan REST di Play sangat mudah.
Pertama, file routes membuatnya mudah untuk menulis rute yang sesuai dengan pendekatan REST.
Kemudian, Anda menulis tindakan Anda, di pengontrol, untuk setiap metode API yang ingin Anda buat.
Bergantung pada bagaimana Anda ingin mengembalikan hasilnya (XML, JSON dll), ada beberapa metode yang dapat Anda gunakan. Misalnya, menggunakan metode renderJSON, memungkinkan hasil dirender dengan sangat mudah. Jika Anda ingin merender XML, Anda dapat melakukannya dengan cara yang sama seperti Anda membuat dokumen HTML di View Anda.
Ini adalah contoh yang bagus.
rute file
File aplikasi
getUser.xml file
sumber
Mengintegrasikan dengan implementasi JAX-RS adalah pendekatan alternatif yang mungkin untuk menggunakan perutean HTTP bawaan Play. Untuk contoh RESTEasy, lihat RESTEasy Play! modul .
Pendekatan ini masuk akal jika Anda sudah berinvestasi di JAX-RS, atau jika Anda memerlukan beberapa fitur lanjutan REST yang disediakan JAX-RS seperti negosiasi konten. Jika tidak, akan lebih sederhana jika hanya menggunakan Play secara langsung untuk menyajikan JSON atau XML sebagai respons terhadap permintaan HTTP.
sumber
Anda harus melihatnya
http://www.lunatech-labs.com/open-source/resteasy-crud-play-module
itu adalah modul untuk bermain yang secara otomatis membangun antarmuka istirahat, seperti modul kasar secara otomatis membangun area admin ...
sumber
Sepertinya pendekatan ini rusak di Play versi 1.2.3. Jika Anda mendownload sumber yang dilakukan oleh @seb dan disebutkan sebelumnya https://github.com/sebhoss/play-user-sample , pembuatan objek pengguna baru menggunakan POST dengan objek JSON tidak lagi memungkinkan.
Anda perlu memiliki metode khusus untuk pembuatan yang dilakukan dengan menggunakan json dan xml POST. Diuraikan di sini: https://groups.google.com/forum/#!topic/play-framework/huwtC3YZDlU
sumber