专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

SpringBoot项目基本的模块搭建

创建项目,划分好对应包的模块

  • 创建项⽬
  • 配置启动类
  • 建⽴对应的包,先建⽴这些包,其他⽤到再补充
    • controller
    • service
    • dao(mapper)
    • domain
    • utils
  • 初始化数据开发:视频、章、默认⽤户信息

81_1.png

请求接口的实战

GET请求

场景:⼀般的查询接⼝就是get请求 注解:@GetMapping = @RequestMapping(method = RequestMethod.GET)

  • 注解的组合
@GetMapping = @RequestMapping(method = RequestMethod.GET)
@PostMapping = @RequestMapping(method = RequestMethod.POST)
@PutMapping = @RequestMapping(method = RequestMethod.PUT)
@DeleteMapping = @RequestMapping(method = RequestMethod.DELETE)

开发查询列表的操作

  • domain创建实体类,给予相应的属性和方法
public class Video {
    private int id;
    private String title;
    private String summary;
    private int price;
    private String coverImg;
    private Date createTime;

    public Video() {
    }

    public Video(int id, String title) {
        this.id = id;
        this.title = title;
        this.createTime=new Date();
    }

  • 在Mapper中模拟一个数据库,并且执行操作返回数据
@Repository
public class VideoMapper {
    //模拟数据库数据
    private static Map<String, Video> videoMap = new HashMap<>();
    static {
        videoMap.put("1",new Video(1,"吉吉波奇"));
        videoMap.put("2",new Video(2,"菲尔"));
        videoMap.put("3",new Video(3,"jjbq"));
        videoMap.put("4",new Video(4,"junko"));
        videoMap.put("5",new Video(5,"啦啦啦"));
    }
    //请求查询所有数据
    public List<Video> findAllVideo(){
        List<Video> videoList = new ArrayList<>();
        videoList.addAll(videoMap.values());
        return videoList;
    }
}

  • service创建接口以及实现类
//接口
public interface VideoService {

    public List<Video> findAll();
}

//实现类
@Service
public class VideoServiceImpl implements VideoService {

    @Autowired
    private VideoMapper videoMapper;

    @Override
    public List<Video> findAll() {
        List<Video> allVideo = videoMapper.findAllVideo();
        return allVideo;
    }
}

  • controller调用服务
@RestController
@RequestMapping("api/video")
public class VideoController {

    @Autowired
    private VideoService videoService;

    @RequestMapping("findAll")
    public List<Video> findAllVideo(){
        List<Video> all = videoService.findAll();
        return all;
    }
}

在postman中获取数据,可以成功显示

81_2.png

在请求接口的改进思路

状态码

我们上面能够实现数据的返回,但是在对接前端的时候,是否应该给一个状态码用来标识是否成功返回数据,统一协议

自定义返回对象,统一协议

  • 在utils包下创建并使用JSONData工具类
public class JsonData {
    private int code;
    private Object data;
    private String msg;

    public static JsonData buildSuccess(Object data){
        return new JsonData(0,data);
    }

    public static JsonData buildError(String msg){
        return new JsonData(-1,"",msg);
    }

    public static JsonData buildError(String msg,int code){
        return new JsonData(code,"",msg);
    }

  • 然后只需要在controller中的方法中调用
@RequestMapping("findAll2")
    public Object findAllVideo2(){
        List<Video> all = videoService.findAll();
        return JsonData.buildSuccess(all);
    }

81_3.png

POST请求校验用户名与密码

http的post请求

  • POST请求-form表单
    • 场景:表单提交,如果不⽤细分PUT/DELETE⽅法,则都可以⽤POST
    • 注解:@PostMapping = @RequestMapping(method = RequestMethod.POST)
  • 开发功能:账号密码提交登录接⼝,form表单形式

开发登录的操作

  • domain
public class User {
    private int id;
    private String username;
    private String password;

  • mapper
@Repository
public class UserMapper {
    private static Map<String, User> userMap = new HashMap<>();

    static {
        userMap.put("jjbq",new User(1,"jjbq","123123"));
        userMap.put("junko",new User(2,"junko","111111"));
        userMap.put("hhh",new User(3,"hhh","123"));
    }

    public User login(String username,String password){
        User user = userMap.get(username);
        if (user == null ){
            return null;
        }
        if (user.getPassword().equals(password)){
            return user;
        }
        return null;
    }
}

  • service
public interface UserService {
    public String login(String username,String password);
}

@Service
public class UserServiceImpl implements UserService {

    private static Map<String,User> sessionMap = new HashMap<>();

    @Autowired
    private UserMapper userMapper;

    @Override
    public String login(String username,String password ) {
        User user = userMapper.login(username,password);
        if (user==null){
            return null;
        }else {
            String token = UUID.randomUUID().toString();
            sessionMap.put(token,user);
            return user.toString()+":"+token;
        }

    }
}

  • controller
@RestController
@RequestMapping("api/user")
public class UserController {
    @Autowired
    private UserService userService;

    @PostMapping("login")
    public JsonData login(@RequestBody  User user){
        String login = userService.login(user.getUsername(), user.getPassword());
        if (StringUtils.isEmpty(login)){
            return JsonData.buildError("用户名密码错误");
        }else {
            return JsonData.buildSuccess(login);
        }
    }
}

81_4.png81_5.png

文章永久链接:https://tech.souyunku.com/27230

未经允许不得转载:搜云库技术团队 » SpringBoot项目基本的模块搭建

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们