【问题标题】:Use @PathParams with PUT REST Api将 @PathParams 与 PUT REST Api 一起使用
【发布时间】:2017-08-07 06:22:14
【问题描述】:

我正在创建一个 REST 服务并且我有以下 API -

    @PUT
    @Path("/delete/{teamName}")
    @Consumes(MediaType.TEXT_PLAIN)
    @Produces(MediaType.TEXT_PLAIN)
    public Response delete(@PathParam("teamName")String teamName) {
        if (db.delete(teamName)) {
            return Response.status(200).build(); 
        }
        return Response.status(400).build();
    }

此 API 接受 PathParamdelete 的团队名称。这是一个PUT 电话。 我的问题是 -

  1. 在 PUT 调用中使用 @PathParams 是一种好习惯吗?

  2. 有什么优点和缺点?

【问题讨论】:

  • 1.在 PUT 调用中使用 PathParam 是可以的。 2. 您应该使用 DELETE 和 PathParam 而不是 PUT 进行删除操作。 3. 你不应该在你的路径中使用像'delete'这样的动词。 4.这取决于teamName是否是唯一标识符 - 如果是,那么没关系,如果不是 - 你应该在Pathparam中使用id。
  • 是的,大多数时候你应该(would),因为 PUT 意味着存在的资源,通常具有唯一标识符。 @PathParam 表示标识符是可变的。
  • @Consumes 注释指定服务器在请求正文中期望的数据类型(即不在 URL 或查询参数中)。如果您的端点只需要@PathParam,那么您就不需要@Consumes,因为无论如何您都没有阅读正文中的任何内容。

标签: java rest put


【解决方案1】:

可以在任何类型的 RESTful API 资源处理程序中使用 PathParam。但是,PUT 方法不适合这里,因为它违反了基本的 REST 原则。

REST 假设特定的 HTTP 方法(如 PUT、GET、DELETE、POST)对应于需要对数据执行的特定操作。 例如,如果要检索数据,则需要使用 GET,而 DELETE 则需要删除数据。

在你的特殊情况下,我会选择类似的东西

DELETE /teams/{teamName}

我建议您至少确认Use RESTful URLs and actions,以便更好地了解基本的 REST 原则。

【讨论】:

    猜你喜欢
    • 2016-07-16
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 2017-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多