【问题标题】:Spring boot push notification restTemplateSpring Boot 推送通知 restTemplate
【发布时间】:2020-09-04 11:51:51
【问题描述】:

我有一个使用 spring boot 作为后端和 vue.js 作为前端的 Web 应用程序,我有一个脚本 python 捕获帧,当获取信息时将其发送到服务器,最后在数据库中添加一行,所以我需要收到通知,我可以使用 RestTemplate 吗?如果是,我该怎么做?

@PostMapping("/plate")
public ResponseEntity<Void> createPositionOc(@RequestParam String plate) {

    LocalDateTime myDateObj = LocalDateTime.now();
    DateTimeFormatter myFormatObj = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

    List<Car> cars = carController.getAllCars();
    boolean exist = cars.stream().anyMatch(o -> o.getPlate().equals(plate));

    List<Car> carsIn = carController.getAllCarsIn();
    boolean existIn = carsIn.stream().anyMatch(o -> o.getPlate().equals(plate));


    List<Position> free = getAllPositiosFree();

    PositionOcp position = new PositionOcp(free.get(0).getId_pos(), plate, 
 myDateObj.format(myFormatObj));

    if (exist && free.size() > 0 && !existIn) {
        PositionOcp createdPositionOc = positionOcpRepository.save(position);
        //send notification
    }    

    return null;
}

【问题讨论】:

    标签: spring-boot vue.js push-notification resttemplate


    【解决方案1】:

    您需要先对代码进行分层。

    创建一个服务并注入你的控制器类。您将编写的所有逻辑都应该在服务层中。不在您的控制器中。然后你需要在你的服务类中注入你的存储库层。这就是分层。

    您在 Controller 类中创建了一个端点..

    @PostMapping("/plate")
    public ResponseEntity<Plate> createPositionOc(@RequestParam String plate) {
        return ResponseEntity.ok(service.createPosition(plate));
    }
    

    在您的服务层中,您可以轻松地向数据库添加一行...

    对于您的前端;你需要给它一些东西来使用。你应该在前面返回你要使用的东西。给他们一个模型来使用。

    Resttemplate 用于通信服务。我不能问问题,不是很了解phyton部分。

    【讨论】:

    • 很抱歉回复晚了,所以脚本将 post 请求发送到 endPoint "/plate" 所以我需要将通知推送到前面
    • 您的脚本将帖子发送到您的控制器。您的控制器处理您的帖子并操作您的数据。当你说 "public ResponseEntity" 时;前端可以使用您的数据。
    • 但我需要实时通知
    猜你喜欢
    • 1970-01-01
    • 2021-07-23
    • 2015-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    相关资源
    最近更新 更多