Согласно запросу, простой подход, подобный REST. Он работает почти так же, как решение Codemwncis, но использует заголовок Accept для согласования содержимого. Сначала файл маршрутов:
GET /user/{id} Application.user
POST /user/ Application.createUser
PUT /user/{id} Application.updateUser
DELETE /user/{id} Application.deleteUser
Здесь вы не укажете какой-либо тип контента. Это значит, что IMHO необходимо только тогда, когда вы хотите иметь «специальные» URI для определенных ресурсов. Как объявление маршрута до /users/feed/
, чтобы всегда возвращаться в Atom/RSS.
контроллер
Приложение выглядит следующим образом:
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);
}
Как вы можете видеть, что я только удалил метод getUserJSON и переименован метод GetUser. Для использования разных типов контента вам нужно создать несколько шаблонов. Один для каждого желаемого типа контента. Например:
пользователь.XML:
<users>
<user>
<name>${user.name}</name>
. . .
</user>
</users>
user.json:
{
"name": "${user.name}",
"id": "${user.id}",
. . .
}
user.html:
<html>...</html>
Этот подход дает браузеры всегда вид HTML, поскольку все браузеры отправить/html тип содержимого текста в заголовке Accept. Все остальные клиенты (возможно, некоторые JavaScript-запросы AJAX) могут определять свой собственный желаемый тип контента. Метод Используя jQuerys Ajax(), вы можете сделать следующее:
$.ajax({
url: @{Application.user(1)},
dataType: json,
success: function(data) {
. . .
}
});
Что вы должны получить подробную информацию о пользователе с ID 1 в формате JSON. Play в настоящее время поддерживает HTML, JSON и XML изначально, но вы можете легко использовать другой тип либо после official documentation, либо использовать content negotiation module.
Если вы используете Eclipse для разработки, я предлагаю использовать REST client plugin, который позволяет тестировать маршруты и соответствующий им тип контента.
я был бы признателен, если и может помогите мне здесь http://stackoverflow.com/questions/32699420/url-parameters-are-not-being-passed-by-curl-post – 2015-09-23 13:08:40