【问题标题】:Call a REST end-point from another从另一个调用 REST 端点
【发布时间】:2019-09-02 20:18:04
【问题描述】:

我在下面提供了一个 REST 端点,

    @PutMapping("/calculateReward")
    public ResponseEntity<String> calculateReward(@RequestParam("userId") Long userId) {

        Optional<User> optional = userService.findById(userId);

        if (!optional.isPresent()) {
            return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
        }

        User user = optional.get();

        double reward = user.getCurrentSteps() * Parameters.REWARD_PER_STEPS_EUR;

        RewardList list = new RewardList();

        list.setUser(user);
        list.setReward(reward);

        user.setCurrentSteps(0);
        user.setRewardLists(list);

        userService.save(user);
        rewardListService.save(list);

        JSONObject json = new JSONObject();

        double convertionRateToEuro = currencyMap.get(user.getCurrencyName());
        double rewardConverted = reward * convertionRateToEuro;

        json.put("name", user.getName());
        json.put("currency", user.getCurrencyName());
        json.put("reward", rewardConverted);

        return ResponseEntity.status(HttpStatus.CREATED).body(json.toString());
    }

ATM 我在另一个端点工作,我需要从上面提供的端点获得奖励值。

    @PostMapping("/paypal/make/payment")
    public ResponseEntity<String> paymentUsingPaypal(@RequestParam("userId") Long userId) {

        Optional<User> optional = userService.findById(userId);

        if (!optional.isPresent()) {
            return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
        }

        User user = optional.get();


        // How do I get the "reward" in double here?
    }

第二个方法结束时如何从calculateReward方法中获得双倍的“奖励”?

【问题讨论】:

  • 你试过添加这一行吗?双倍奖励 = user.getCurrentSteps() * 参数.REWARD_PER_STEPS_EUR;
  • 不,我还需要将当前步数设置为零等。那么使用 calculateReward 方法在其他方面也有帮助是没有意义的。
  • 如果这是一个您不知道如何构建逻辑的设计问题,您需要描述您的需求和面临的挑战,以及您尝试过什么以及为什么会这样没用。

标签: java spring rest spring-boot curl


【解决方案1】:

如果是同一个应用程序,为什么不直接调用:

nameOfController.calculateReward(userId);

如果您无法调用该方法,则必须使用例如feign 编写客户端。

【讨论】:

  • 我认为这将完成工作String s = UserAPI.calculateReward(user.getId()).getBody();
  • 太好了,如果您觉得这个答案有帮助,请考虑支持/标记为正确;)
  • 你知道,SO 想让我们反思几分钟,然后我们才能接受答案;)
  • @Arefe 呵呵,我不知道,最近没问,谢谢;)
  • 您需要等待 5-7 分钟才能接受答案。我不记得以前是这种情况
猜你喜欢
  • 1970-01-01
  • 2018-11-26
  • 2023-01-29
  • 1970-01-01
  • 2018-02-28
  • 2023-02-22
  • 2019-04-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多