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);
}
}