基于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);
}
}
睡觉!
-