По запросу, простой подход, подобный REST. Он работает почти так же, как и решение Codemwncis, но использует заголовок Accept для согласования содержимого. Сначала файл маршрутов:
GET /user/{id} Application.user
POST /user/ Application.createUser
PUT /user/{id} Application.updateUser
DELETE /user/{id} Application.deleteUser
Здесь вы не указываете какой-либо тип контента. Это необходимо, ИМХО, только тогда, когда вы хотите иметь «специальные» 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. Чтобы разные типы контента работали, вам нужно создать несколько шаблонов. По одному для каждого желаемого типа контента. Например:
user.xml:
<users>
<user>
<name>${user.name}</name>
. . .
</user>
</users>
user.json:
{
"name": "${user.name}",
"id": "${user.id}",
. . .
}
user.html:
<html>...</html>
Этот подход дает браузерам всегда представление HTML, поскольку все браузеры отправляют тип содержимого text / html в своем заголовке Accept. Все другие клиенты (возможно, некоторые запросы AJAX на основе JavaScript) могут определять свой собственный желаемый тип контента. Используя метод jQuerys ajax (), вы можете сделать следующее:
$.ajax({
url: @{Application.user(1)},
dataType: json,
success: function(data) {
. . .
}
});
Это должно дать вам подробную информацию о пользователе с идентификатором 1 в формате JSON. Play в настоящее время поддерживает HTML, JSON и XML изначально, но вы можете легко использовать другой тип, следуя официальной документации или используя модуль согласования содержимого .
Если вы используете Eclipse для разработки, я предлагаю использовать клиентский плагин REST, который позволяет вам тестировать ваши маршруты и соответствующий им тип контента.
Это все еще популярный вопрос, но ответы, получившие наибольшее количество голосов, не соответствуют текущей версии игры. Вот рабочий пример REST с игрой 2.2.1:
Conf / маршруты:
приложение / контроллеры / UserController.java:
источник
Воспользуйтесь игрой! делать все это. Написание REST-сервисов в Play очень просто.
Во-первых, файл маршрутов упрощает запись маршрутов, соответствующих подходу REST.
Затем вы пишете свои действия в контроллере для каждого метода API, который хотите создать.
В зависимости от того, как вы хотите вернуть результат (XML, JSON и т. Д.), Вы можете использовать несколько методов. Например, использование метода renderJSON позволяет очень легко отображать результаты. Если вы хотите отобразить XML, вы можете просто сделать это так же, как вы создаете HTML-документ в своем представлении.
Вот отличный пример.
файл маршрутов
Файл приложения
файл getUser.xml
источник
Интеграция с реализацией JAX-RS - возможный альтернативный подход к использованию встроенной HTTP-маршрутизации Play. Пример RESTEasy см. В разделе RESTEasy Play! модуль .
Этот подход имеет смысл, если вы уже инвестировали в JAX-RS или если вам нужны некоторые из расширенных функций REST, которые предоставляет JAX-RS, например согласование содержимого. В противном случае было бы проще просто использовать Play напрямую для обслуживания JSON или XML в ответ на HTTP-запросы.
источник
ты должен взглянуть на
http://www.lunatech-labs.com/open-source/resteasy-crud-play-module
это модуль для игры, который автоматически создает интерфейс отдыха, точно так же, как модуль crud автоматически создает админку ...
источник
Кажется, что этот подход не работает в версии 1.2.3 Play. Если вы загрузите исходный код, созданный @seb и упомянутый ранее https://github.com/sebhoss/play-user-sample , создание нового объекта пользователя с помощью POST с объектом JSON больше невозможно.
У вас должны быть определенные методы для создания, выполняемые с использованием POST-сообщений json и xml. Обрисовано здесь: https://groups.google.com/forum/#!topic/play-framework/huwtC3YZDlU
источник