Theo yêu cầu, một cách tiếp cận giống như REST đơn giản. Nó hoạt động gần giống như cách giải pháp của Codemwncis hoạt động nhưng sử dụng tiêu đề Chấp nhận để thương lượng nội dung. Đầu tiên, tệp tuyến đường:
GET /user/{id} Application.user
POST /user/ Application.createUser
PUT /user/{id} Application.updateUser
DELETE /user/{id} Application.deleteUser
Bạn không chỉ định bất kỳ loại nội dung nào ở đây. Làm như vậy IMHO chỉ cần thiết khi bạn muốn có các URI "đặc biệt" cho các tài nguyên nhất định. Giống như khai báo một tuyến đường để /users/feed/
luôn trả về trong Atom / RSS.
Bộ điều khiển ứng dụng trông giống như sau:
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);
}
Như bạn có thể thấy, tôi chỉ loại bỏ phương thức getUserJSON và đổi tên phương thức getUser. Để các loại nội dung khác nhau hoạt động, bạn phải tạo một số mẫu. Một cho mỗi loại nội dung mong muốn. Ví dụ:
user.xml:
<users>
<user>
<name>${user.name}</name>
. . .
</user>
</users>
user.json:
{
"name": "${user.name}",
"id": "${user.id}",
. . .
}
user.html:
<html>...</html>
Cách tiếp cận này cung cấp cho các trình duyệt luôn ở dạng xem HTML, vì tất cả các trình duyệt đều gửi một loại nội dung văn bản / html trong tiêu đề Chấp nhận của chúng. Tất cả các máy khách khác (có thể là một số yêu cầu AJAX dựa trên JavaScript) có thể xác định loại nội dung mong muốn của riêng họ. Sử dụng phương thức jQuerys ajax () bạn có thể làm như sau:
$.ajax({
url: @{Application.user(1)},
dataType: json,
success: function(data) {
. . .
}
});
Điều này sẽ cung cấp cho bạn thông tin chi tiết về Người dùng có ID 1 ở định dạng JSON. Play hiện hỗ trợ HTML, JSON và XML nguyên bản nhưng bạn có thể dễ dàng sử dụng một loại khác bằng cách làm theo tài liệu chính thức hoặc sử dụng mô-đun thương lượng nội dung .
Nếu bạn đang sử dụng Eclipse để phát triển, tôi khuyên bạn nên sử dụng plugin ứng dụng khách REST cho phép bạn kiểm tra các tuyến của mình và loại nội dung tương ứng của chúng.