美文网首页云 & 网站
用 SpringBoot 实现简单的接口

用 SpringBoot 实现简单的接口

作者: 大成小栈 | 来源:发表于2020-04-24 19:47 被阅读0次

上篇文章已经介绍了SpringBoot 的基本使用过程,本文主要介绍用那篇文章中配置好的SpringBoot工程实现简单的接口。

最终工程目录是下面这样:

1. 工程目录结构

这是个简陋的目录结构,仅供我们参考,其中主要分为四类:

  • repository
    继承于JpaRepository,其中主要封装了操作数据库的sql动作,可以调其中的方法操作数据库,也可以自定义sql语句操作数据库。repository是Jpa的使者,是数据库的直接操作者;
  • controller
    请求接口类、request/response类等,类前需要相关注解;
  • service
    处理model实例,并将model实例通过repository同步给数据库;
  • model
    数据实例,一个Entity对应数据库中的一个表。

最后还有一个..Application类,系统默认生成,不需要处理。

2. 各个类的实现

实现GET、POST类型的两个接口:
/todo/list
/todo/listAdd

  • TodoController
package com.dcxz.demo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;


@RestController
public class TodoController {

    @Autowired
    TodoService todoService;
    
    @RequestMapping(value = "/todo/list", method = RequestMethod.GET)
    public TodoResponse getTodoList(@RequestParam long id) {

        Todo todo = todoService.getTodoData(id);

        TodoResponse response = new TodoResponse();
        response.setName(todo.getName());
        //response.setMember(100);
        //response.setCount(20);
        return response;
    }


    @RequestMapping(value = "/todo/listAdd", method = RequestMethod.POST)
    public String addTodoList(@RequestBody AddTodoRequest request) {

        String name = request.getName();
        if (name == null) { throw new RuntimeException("参数错误"); }

        todoService.addTodoData(name);

        return "success!";
    }
}
  • 请求体和响应体
/// AddTodoRequest
package com.dcxz.demo;

public class AddTodoRequest {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}


/// TodoResponse
package com.dcxz.demo;

import java.util.Set;

public class TodoResponse {

    private String name;
    private int count;
    private int member;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }

    public int getMember() {
        return member;
    }

    public void setMember(int member) {
        this.member = member;
    }
}
  • service
package com.dcxz.demo;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;

@Service
public class TodoService {

    @Autowired
    TodoRepository todoRepository;

    public void addTodoData(String name) {

        Todo todo = new Todo();
        todo.setName(name);
        todo.setCreateTime(new Date());

        todoRepository.save(todo);
    }


    public Todo getTodoData(long id) {

        Todo todo = todoRepository.findById(id).get();
        return todo;
    }
}
  • Todo
package com.dcxz.demo;


import javax.persistence.*;
import java.util.Date;

@Entity
@Table(name = "s_todo")
public class Todo {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    private String name;

    @Column(name = "create_time")
    private Date createTime;


    public long getId() { return id; }
    public void setId(long id) { this.id = id; }

    public String getName() { return name; }
    public void setName(String name) { this.name = name; }

    public Date getCreateTime() { return createTime; }
    public void setCreateTime(Date createTime) { this.createTime = createTime; }
}
  • repository
package com.dcxz.demo;

import org.springframework.data.jpa.repository.JpaRepository;

public interface TodoRepository extends JpaRepository<Todo, Long> {
}

3. 调用接口

可以通过浏览器、PostMan调用以上写好的两个接口,来测试一下接口是否正常。在调用时注意检查IP地址、端口、接口名和参数是否设置正确。

相关文章

网友评论

    本文标题:用 SpringBoot 实现简单的接口

    本文链接:https://www.haomeiwen.com/subject/wvafwhtx.html