后端一 姚宇涛
ps:本文纯属虚构,如有雷同纯属巧合
1.使用说明
本次的作业运用了Spring Boot这个不大熟悉的架构,由于本人才疏学浅,故尽量回避(bushi),而重点关注如何使用
在网页上使用:
首先我们找到那个含有主方法的Activity的java文件,找到启动的按钮,当看到控制面板上正常出现一些"INFO"的时候,就说明编译通过,正常运行
之后我们在地址栏里输入URL,localhost代表本机,自己当服务器(应该是这样吧),8080为端口号,接下来根据要执行的操作添加对应的路由,如果是get方式,就要加上对应的参数,比如:
@GetMapping("/add")
public double add(@RequestParam double a, @RequestParam double b){
return mainService.add(a,b);
}
```
#### 此处的代码用来实现加法功能,对应路由函数为/add,所需参数为a,b两个实数
#### URL可写成localhost:8080/add?a=23.6&b=-96.3
#### 此处路由和参数用?连接,多个参数之间用&连接,这样可以实现get方式的参数传递,但是post传递则需要网页上制作表单再获取,由于个人原因暂时无法实现
### 在Postman上使用
#### get方式与网页类似,但是post形式可以在这里用表单的形式录入
#### 在左侧collections中新建项目,根据导入数据的方式选择Post或get,如果选择post方式,只需要输入到路由即可,如减法操作:
```java
@PostMapping("/reduce")
public double reduce(@RequestParam double a,@RequestParam double b){
return mainService.reduce(a,b);
}
这里采用了post方式,别的格式都是一样,只是在输入数据时有所差异
对应URL为localhost:8080/reduce,不用附加参数,防止泄露
这时候在下面选择Body中的www那个选项,就可以按标识将将a,b输入了,之后即可正常运行并输出结果
2.一些特殊情况的说明
主要是执行除法时可能会有一些特殊情况,比如,如果输入的除数b是0,就会出现错误,为了防止这种情况出现,做了以下改动:
public String rid( double a, double b){
String judge;
if (b == 0) {
judge="illegal";
return judge;
}
else{
double tmp=a/b;
judge=Double.toString(tmp);
return judge;
}
}
主要做了两方面的改动:一是判断了是否有除数为0的情况,而是将返回值类型改为了String(实数型难以传递逻辑错误的信息),因此也要将获得的实数型重新转化为字符串输出
3.简要的学习历程
本次的学习主要来源于模仿学长的代码,同时自己适当创新,同时也遇到了很多问题,如:
文件夹位置建错,没有建在src目录下,导致虽然编译通过却无法在网页上显示;
postman中以post形式输入时输错表单;
…………(太多了)
最后把代码奉上:
控制器端:
package com.example.demo.service;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Service//不需要再创建对象
public class MainService {
public double add( double a, double b){
return a+b;
}
public double reduce( double a, double b){
return a-b;
}
public double multiply( double a, double b){
return a*b;
}
public String rid( double a, double b){
String judge;
if (b == 0) {//判断是否为非法表达式
judge="illegal";
return judge;
}
else{
double tmp=a/b;
judge=Double.toString(tmp);
return judge;
}
}
}
打工人端
package com.example.demo.controller;
import com.example.demo.course.Course;
import com.example.demo.service.MainService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
public class Controller {
@Autowired
MainService mainService;//相当于新建对象
@GetMapping("/add")
public double add(@RequestParam double a, @RequestParam double b) {
return mainService.add(a, b);
}
@PostMapping("/reduce")
public double reduce(@RequestParam double a, @RequestParam double b) {
return mainService.reduce(a, b);
}
@GetMapping("/multiply")
public double multiply(@RequestParam double a, @RequestParam double b) {
return mainService.multiply(a, b);
}
@PostMapping("rid")
public String rid(@RequestParam double a, @RequestParam double b) {
return mainService.rid(a, b);
}
}