用java详细的写出前端会传 路由地址、like或者dislike,要提供两个接口 1、前端调用like和dislike然后统计数量 2、前端传路由地址过来返回like和dislike的统计数据今天 14:13
时间: 2023-04-09 16:04:32 浏览: 240
好的,我可以回答这个问题。以下是用 Java 编写的前端传递路由地址、like 或 dislike 的详细过程:
1. 前端传递路由地址
前端可以使用 AJAX 或 Fetch API 将路由地址传递给后端。以下是一个使用 Fetch API 的示例代码:
```
fetch('/api/like-dislike', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
route: '/example-route'
})
})
```
在这个示例中,前端向 `/api/like-dislike` 发送了一个 POST 请求,并将路由地址 `/example-route` 作为 JSON 格式的请求体发送给后端。
2. 统计 like 和 dislike 数量
后端可以使用数据库或缓存等方式来统计 like 和 dislike 的数量。以下是一个使用 Spring Boot 和 Redis 的示例代码:
```
@RestController
@RequestMapping("/api/like-dislike")
public class LikeDislikeController {
private final RedisTemplate<String, Integer> redisTemplate;
public LikeDislikeController(RedisTemplate<String, Integer> redisTemplate) {
this.redisTemplate = redisTemplate;
}
@PostMapping
public void likeOrDislike(@RequestBody LikeDislikeRequest request) {
String key = "like-dislike:" + request.getRoute();
if (request.isLike()) {
redisTemplate.opsForValue().increment(key, 1);
} else {
redisTemplate.opsForValue().increment(key, -1);
}
}
@GetMapping
public LikeDislikeResponse getLikeDislike(@RequestParam String route) {
String key = "like-dislike:" + route;
Integer like = redisTemplate.opsForValue().get(key);
Integer dislike = -like;
return new LikeDislikeResponse(like, dislike);
}
}
class LikeDislikeRequest {
private String route;
private boolean like;
// getters and setters
}
class LikeDislikeResponse {
private int like;
private int dislike;
// constructor and getters
}
```
在这个示例中,后端使用 Redis 存储每个路由地址的 like 和 dislike 数量,并提供了两个接口:
- `POST /api/like-dislike`:前端调用 like 和 dislike 并统计数量。
- `GET /api/like-dislike`:前端传递路由地址过来返回 like 和 dislike 的统计数据。
注意:这只是一个示例代码,实际情况下需要根据具体需求进行修改和优化。
阅读全文