软件园学生在线

  • {{ item.name }}
  • 2023试用期

登录与注册

【后端一】 冯羽

  • Mad_Fish
  • 2022-10-18
  • 0

基于Spring boot 的简单 REST API

Mad_Fish 2022.10.17

> 【观前警告】本文行文可能会十分随意并充斥着吐槽


Mad_Fish:

“哦哦哦!今天又是学习后端的一天呢!”

嗯,打开PDF………………

按着顺序做完要求的东西………………(紧急学了一下怎么破解IDEA)

四则运算……

实数运算…………

package com.example.firstspringboot.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class Main {

    @GetMapping("/")
    public String helloWorld(){
        return "Hello,world!";
    }

    @GetMapping("/calu/plus")
    public double plus(@RequestParam double a,@RequestParam double b){
        return a+b;
    }

    @GetMapping("/calu/minu")
    public double minus(@RequestParam double a,@RequestParam double b){
        return a-b;
    }

    @GetMapping("calu/mult")
    public double mult(@RequestParam double a,@RequestParam double b){
        return a*b;
    }

    @GetMapping("calu/divi")
    public double divi(@RequestParam double a,@RequestParam double b){
        return a/b;
    }

}

(Mad_Fish继续往下拉着PDF……)

-

“???就没啦?”

-

“就没有再往下教了吗!!!这个PDF才这么一点内容!!!”

-

“篠原春奈简直就是一只懒狗!!!”( 危 险 发 言 )

-

呃……

当看到PDF最底下的时候……

《拓 展 点 ( 不 强 制 要 求 )》


?

-

?

-

?

咳咳,总监费心了,看来内容还是不少的呢!(只是没有教学)

这一定是懒狗总监为了考验我们是否重视自主学习而如此设定的吧~)

(害)

于是乎……

Mad_Fish决定先做一个简单的扩展……

当除法运算除数为0时,输出"error"

(但是我对这方面毫无了解?)

-

(不管了,先尝试一番罢!)

-

…………(5min Later)

@GetMapping("calu/divi")
    public  void divi(@RequestParam double a,@RequestParam double b){
        if(b==0)err();
        else divide(a,b);
       // return;
    }
    double divide(double a,double b){
        return a/b;
    }
     String err(){
        return "error";
    }

……这不管用诶!

-

只有return输出根本搞不定吧!

-

(一定有别的方式输出……一定有……)

-

(一定有……)

-

(一定有……)

-

(一定有……)

-

(一定有……)

-

(一定有……)

-

…………(10min Later)


呃……

他喵的,怎么会有Object这种东西


好的吧,让我看看还有什么拓展点?

做个前端?(つまらない!)

判断数据溢出?(嘶……)

@GetMapping("/calu/plus")
    public BigDecimal plus(@RequestParam BigDecimal a, @RequestParam BigDecimal b){
        return a.add(b);
    }

    @GetMapping("/calu/minu")
    public BigDecimal minus(@RequestParam BigDecimal a,@RequestParam BigDecimal b){
        return a.subtract(b);
    }

    @GetMapping("calu/mult")
    public BigDecimal mult(@RequestParam BigDecimal a,@RequestParam BigDecimal b){
        return a.multiply(b);
    }

    @GetMapping("calu/divi")
    public  Object divi(@RequestParam BigDecimal a,@RequestParam BigDecimal b){
        BigDecimal c=new BigDecimal("0");
        if(b.compareTo(c)==0)return "error";
        return a.divide(b,BigDecimal.ROUND_HALF_UP);
    }

既然不会溢出,不就不用判断溢出了吗))


还有什么拓展点?

判断数据类型是否有误?(啊这…………)

-

这下感觉不好办了……

-

不过呢,感觉不好办≠真的不好办……

-

且让我试一试(逝一逝)再见分晓……

-

……

-

输入方式采用String,判断是否是实数

-

若是,则转化成BigDecimal

-

然后输出

-

问题不大!(除了冗长以外应该没什么缺陷?)

-

最终代码奉上!

package com.example.firstspringboot.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.math.BigDecimal;

@RestController
public class Main {
    @GetMapping("/")
    public String helloWorld(){
        return "Hello,world!";
    }

    @GetMapping("/calu/plus")
    public Object plus(@RequestParam String a, @RequestParam String b){
        boolean k=true;//k 记录输入的字符串中"."的数量
        boolean num=true;
        for(int i=0;i<a.length();i++){
            if(a.charAt(i)<'0'||a.charAt(i)>'9'){
                if(a.charAt(i)=='.'&&k){
                    k=false;
                    continue;
                }
                return "Incorrect input!";
            }
            num=false;
        }
        if(num)return "Please input at least one number!";//num 特判形如”.“或空气输入
        num=true;
        k=true;
        for(int i=0;i<b.length();i++){
            if(b.charAt(i)<'0'||b.charAt(i)>'9'){
                if(b.charAt(i)=='.'&&k){
                    k=false;
                    continue;
                }
                return "Incorrect input!";
            }
            num=false;
        }
        if(num)return "Please input at least one number!";
        BigDecimal c = new BigDecimal(a);
        BigDecimal d = new BigDecimal(b);
        return c.add(d);
    }

    @GetMapping("/calu/minu")
    public Object minus(@RequestParam String a,@RequestParam String b){
        boolean k=true;
        boolean num=true;
        for(int i=0;i<a.length();i++){
            if(a.charAt(i)<'0'||a.charAt(i)>'9'){
                if(a.charAt(i)=='.'&&k){
                    k=false;
                    continue;
                }
                return "Incorrect input!";
            }
            num=false;
        }
        if(num)return "Please input at least one number!";
        k=true;
        num=true;
        for(int i=0;i<b.length();i++){
            if(b.charAt(i)<'0'||b.charAt(i)>'9'){
                if(b.charAt(i)=='.'&&k){
                    k=false;
                    continue;
                }
                return "Incorrect input!";
            }
            num=false;
        }
        if(num)return "Please input at least one number!";
        BigDecimal c = new BigDecimal(a);
        BigDecimal d = new BigDecimal(b);
        return c.subtract(d);
    }

    @GetMapping("calu/mult")
    public Object mult(@RequestParam String a,@RequestParam String b){
        boolean k=true;
        boolean num=true;
        for(int i=0;i<a.length();i++){
            if(a.charAt(i)<'0'||a.charAt(i)>'9'){
                if(a.charAt(i)=='.'&&k){
                    k=false;
                    continue;
                }
                return "Incorrect input!";
            }
            num=false;
        }
        if(num)return "Please input at least one number!";
        num=true;
        k=true;
        for(int i=0;i<b.length();i++){
            if(b.charAt(i)<'0'||b.charAt(i)>'9'){
                if(b.charAt(i)=='.'&&k){
                    k=false;
                    continue;
                }
                return "Incorrect input!";
            }
            num=false;
        }
        if(num)return "Please input at least one number!";
        BigDecimal c = new BigDecimal(a);
        BigDecimal d = new BigDecimal(b);
        return c.multiply(d);
    }

    @GetMapping("calu/divi")
    public  Object divi(@RequestParam String a,@RequestParam String b){
        boolean k=true;
        boolean num=true;
        for(int i=0;i<a.length();i++){
            if(a.charAt(i)<'0'||a.charAt(i)>'9'){
                if(a.charAt(i)=='.'&&k){
                    k=false;
                    continue;
                }
                return "Incorrect input!";
            }
            num=false;
        }
        if(num)return "Please input at least one number!";
        num=true;
        k=true;
        for(int i=0;i<b.length();i++){
            if(b.charAt(i)<'0'||b.charAt(i)>'9'){
                if(b.charAt(i)=='.'&&k){
                    k=false;
                    continue;
                }
                return "Incorrect input!";
            }
            num=false;
        }
        if(num)return "Please input at least one number!";
        BigDecimal c = new BigDecimal(a);
        BigDecimal d = new BigDecimal(b);
        BigDecimal p=new BigDecimal("0");
        if(d.compareTo(p)==0)return "0 can't be a divisor!";
        return c.divide(d,BigDecimal.ROUND_HALF_UP);
    }
}

睡觉!

-

2022年10月18日00:01:32

Mad_Fish
Mad_Fish
© 2025 软件园学生在线
Theme by Wing