Netflix Feign 发起 DELETE 请求

DELETE 请求是一种用于请求服务器删除指定资源的方法。它在网络应用和服务接口中扮演着重要的角色,通过向服务器发送删除资源的请求,来清理不再需要的数据或对象。

例如,在一个文件管理系统的网络应用中,当用户想要删除一个存储在服务器上的文件时,客户端(如浏览器)就可以向服务器发送一个 DELETE 请求。这个请求会包含要删除文件的路径或者唯一标识符等信息,服务器收到请求后,会根据这些信息找到对应的文件并将其删除。

DELETE 方法的格式为:

DELETE <请求URL> HTTP/协议版本

例如:

DELETE /api/files/12345 HTTP/1.1

其中,DELETE 是请求方法,/api/files/12345 表示要删除的文件资源的路径(这里假设文件资源有一个唯一标识符为 12345),HTTP/1.1 是协议版本。

传统风格示例

准备工作

完整代码请参考“Netflix Feign 准备工作”章节的 UserController.java 类,下面将提供一个 DELETE 服务,用于删除用户信息,如下:

// DELETE 请求,删除用户
@DeleteMapping("/deleteUser")
public CommonReturn<String> deleteUser(@RequestParam("id") Long id) {
    log.info("deleteUser() id={}", id);
    USERS.removeIf(user -> user.getId().equals(id));
    return CommonReturn.success("删除成功").ext(appName, appPort);
}

上面服务使用 @RequestParam("id") 接受用户传递的 id 参数。

编写 Feign 客户端

根据上面提供的服务接口信息,编写一个 Feign 客户端:

public interface UserFeign {

    // 使用 {id} 引用 @Param("id") 声明的参数胡
    @RequestLine("DELETE /user/deleteUser?id={id}")
    CommonReturn<String> deleteUser(@Param("id") Long id);


    // 创建Feign客户端实例的静态方法
    static UserFeign create() {
        return Feign.builder()
        .encoder(new JacksonEncoder())
        .decoder(new JacksonDecoder())
        .contract(new Contract.Default())
        .target(UserFeign.class, "http://localhost:8090/");
    }

}

调用 Feign 客户端

完整代码请参考“Netflix Feign 准备工作”章节的 FeignController.java 类,下面仅仅给出了 demo6 方法的代码:

@RestController
public class FeignController {

    @GetMapping("/demo6")
    public CommonReturn<String> demo6(@RequestParam Long id) {
        return UserFeign.create().deleteUser(id);
    }

}

Restful 风格示例

准备工作

完整代码请参考“Netflix Feign 准备工作”章节的 UserRestfulController.java 类,下面将提供一个 DELETE 服务,用于删除用户信息,如下:

// DELETE 请求,删除用户
@DeleteMapping("/{id}")
public CommonReturn<String> deleteUser(@PathVariable Long id) {
    log.info("deleteUser() id={}", id);
    USERS.removeIf(user -> user.getId().equals(id));
    return CommonReturn.success("删除成功");
}

上面服务通过 @PathVariable 注解从 URL 地址中接收 id 参数。

编写 Feign 客户端

根据上面提供的服务接口信息,编写一个 Feign 客户端:

public interface UserRestfulFeign {

    @RequestLine("DELETE /user/restful/{id}")
    CommonReturn<String> deleteUser(@Param Long id);

    // 创建Feign客户端实例的静态方法
    static UserRestfulFeign create() {
        return Feign.builder()
        .encoder(new JacksonEncoder())
        .decoder(new JacksonDecoder())
        .contract(new Contract.Default())
        .target(UserRestfulFeign.class, "http://localhost:8090/");
    }

}

调用 Feign 客户端

完整代码请参考“Netflix Feign 准备工作”章节的 FeignController.java 类,下面仅仅给出了 demo11 方法的代码:

@RestController
public class FeignController {

    @GetMapping("/demo11")
    public CommonReturn<String> demo11(@RequestParam Long id) {
        return UserRestfulFeign.create().deleteUser(id);
    }

}


说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号