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 客户端:
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/"); } }
完整代码请参考“Netflix Feign 准备工作”章节的 FeignController.java 类,下面仅仅给出了 demo6 方法的代码:
@RestController public class FeignController { @GetMapping("/demo6") public CommonReturn<String> demo6(@RequestParam Long id) { return UserFeign.create().deleteUser(id); } }
完整代码请参考“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 客户端:
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/"); } }
完整代码请参考“Netflix Feign 准备工作”章节的 FeignController.java 类,下面仅仅给出了 demo11 方法的代码:
@RestController public class FeignController { @GetMapping("/demo11") public CommonReturn<String> demo11(@RequestParam Long id) { return UserRestfulFeign.create().deleteUser(id); } }