尽情玩耍!框架

2023-12-13

我们正在计划一个主要为移动应用程序提供内容的项目,但需要有一个网站。

我的问题是,使用 Jersey 或 Restlet 为我们的移动应用程序开发 REST API,然后使用 Play! 是否有意义?为网站提供服务。

或者直接使用 Play 是否更有意义?做这一切?如果是这样,如何通过 Play 进行 REST!框架?


根据请求,采用简单的类似 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 方法。为了使不同的内容类型发挥作用,您现在必须创建多个模板。每种所需的内容类型都有一个。例如:

用户.xml:

<users>
  <user>
    <name>${user.name}</name>
    . . .
  </user>
</users>

用户.json:

{
  "name": "${user.name}",
  "id": "${user.id}",
  . . . 
}

用户.html:

<html>...</html>

这种方法始终为浏览器提供 HTML 视图,因为所有浏览器都会在其 Accept 标头中发送 text/html 内容类型。所有其他客户端(可能是一些基于 JavaScript 的 AJAX 请求)都可以定义自己所需的内容类型。使用 jQuery 的 ajax() 方法,您可以执行以下操作:

$.ajax({
  url: @{Application.user(1)},
  dataType: json,
  success: function(data) {
    . . . 
  }
});

这应该会为您提供有关 ID 为 1 的用户的详细信息(JSON 格式)。 Play 目前原生支持 HTML、JSON 和 XML,但您可以按照以下任一方式轻松使用不同类型:官方文档或使用内容协商模块.

如果您使用 Eclipse 进行开发,我建议使用REST 客户端插件它可以让您测试您的路线及其相应的内容类型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尽情玩耍!框架 的相关文章

随机推荐