如何解决我在通过邮递员测试 spring boot rest api 时遇到的错误?

如何解决如何解决我在通过邮递员测试 spring boot rest api 时遇到的错误?

我创建了一个简单的 api,它使用 spring boot 计算生日的剩余天数。 Tomcat服务器成功站起来,不报错。但是当我尝试通过邮递员发布 API 来测试它时,我在下面的屏幕截图中收到错误消息。我分享了下面服务层的代码和控制器层的代码。我应该怎么做才能修复这个错误?

项目结构:

enter image description here

Spring Boot 服务层:

@Service
public class BdayService {
    private int yearOfBirth;
    private int monthOfBirth;
    private int dayOfBirth;

    public String setTime(LocalDate birthday) {
        if(birthday == null){
            return null;
        }

        final boolean isToday = birthday.getMonth() == LocalDate.now().getMonth()
                && birthday.getDayOfMonth() ==LocalDate.now().getDayOfMonth();

        if(birthday.isAfter(LocalDate.now())) {
            return "Please insert a valid birthday.";
        } else if (isToday) {
            return "HAPPY BIRTHDAY!";
        } else {
            yearOfBirth = birthday.getYear();
            monthOfBirth = birthday.getMonthValue();
            dayOfBirth = birthday.getDayOfYear();
            return timeRemaining(monthOfBirth,dayOfBirth);
        }
    }

    private String timeRemaining(int month,int day) {
        int currYear = LocalDate.now().getYear();
        int currMonth = LocalDate.now().getMonthValue();
        int currDay = LocalDate.now().getDayOfYear();

        //TIME REMAINING
        int hrsRemaining = 24 - LocalTime.now().getHour() - 1;
        int minsRemaining = 60 - LocalTime.now().getMinute() - 1;
        int secsRemaining = 60 - LocalTime.now().getSecond();
        //Find how many days in the year in order to calculate the number of days left
        final int daysInYear = LocalDate.now().isLeapYear() ? 366 : 365;
        int daysRemaining = dayOfBirth > currDay ?
                dayOfBirth - currDay - 1:
                (daysInYear - currDay) + dayOfBirth - 1;

        final int age = monthOfBirth > currMonth ?
                currYear - yearOfBirth :
                currYear + 1 - yearOfBirth;

        return ("There are " + daysRemaining + " days,\n"
                + hrsRemaining + " hours,\n"
                + minsRemaining + " minutes and\n"
                + secsRemaining + " seconds until\n"
                + "you turn " + age + "!");
    }
}

Spring Boot 控制器层:

@Controller
public class BdayController {

    @Autowired
    private BdayService bdayService;

    @PostMapping("/findBirthDay")
    public String findBirthDay(@RequestParam("bday") String bday){
        //bday format => dd-mm-yyyy
        int year = 0;
        int month = 0;
        int day = 0;

        if(bday.contains("-")){
            String[] bdayArray = bday.split("-");

            year = Integer.parseInt(bdayArray[2]);
            month = Integer.parseInt(bdayArray[1]);
            day = Integer.parseInt(bdayArray[0]);

            return bdayService.setTime(LocalDate.of(year,month,day));
        }else{
            return "Given date format is not invalid!";
        }
    }
}

Postman api 测试错误:

enter image description here

解决方法

您在正文中添加参数,您不应该,它应该在网址中:

代替:

http://localhost:8080/findBirthDay/

试试:

http://localhost:8080/findBirthDay?bday="02-03-1995"

在这里你可以找到一个关于如何使用请求参数的很好的教程:

Use Request Parameters

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?