gpt4 book ai didi

java - Spring MVC 转换 Spring Rest Api

转载 作者:行者123 更新时间:2023-11-30 12:04:49 26 4
gpt4 key购买 nike

我有一个spring mvc项目,我想转换spring rest api项目。

这是我的示例代码;

我的 Controller

@Controller
@RequestMapping("/student")
public class StudentController {

@Autowired
private StudentService studentService;

@Autowired
private SchoolService schoolService;
@GetMapping("/list")
public String ListStudents(Model model) {

List<Student> theStudent = studentService.getStudents();
model.addAttribute("students", theStudent);

return "List-student";
}

@GetMapping("/addNewStudent")
public String addNewStudent(Model model) {

Student theStudent = new Student();
model.addAttribute("student", theStudent);

List<School> theSchool = schoolService.getSchools();
model.addAttribute("schools", theSchool);
return "student-form";
}

@PostMapping("/saveStudent")
public String saveStudent(@ModelAttribute("student") Student theStudent) {

studentService.saveStudent(theStudent);

return "redirect:/student/list";
}

@GetMapping("/showFormforUpdate")
public String showFormForUpdate(@RequestParam("studentID") int theId, Model model) {

Student theStudent = studentService.getStudent(theId);
model.addAttribute(theStudent);
List<School> theSchool = schoolService.getSchools();
model.addAttribute("schools", theSchool);
return "student-form";

}

@GetMapping("/deleteStudent")
public String deleteStudent(@RequestParam("studentID") int theId, Model model) {

studentService.deleteStudent(theId);

return "redirect:/student/list";
}

}

我的 DAOImpl 类

    @Repository
public class StudenDAOImpl implements StudentDAO {

@Autowired
private SessionFactory sessionFactory;


@Override
@Transactional
public List<Student> getStudents() {

Session currentSession=sessionFactory.getCurrentSession();
Query<Student> theQuery = currentSession.createQuery("from Student", Student.class);
List<Student> students=theQuery.getResultList();
return students;
}


@Override
public void saveStudent(Student theStudent) {

Session currentSession=sessionFactory.getCurrentSession();
currentSession.saveOrUpdate(theStudent);
}


@Override
public Student getStudent(int theId) {

Session currentSession=sessionFactory.getCurrentSession();
Student theStudent=currentSession.get(Student.class, theId);

return theStudent;
}


@Override
public void deleteStudent(int theId) {
Session currentSession=sessionFactory.getCurrentSession();
Query theQuery=currentSession.createQuery("delete from Student where id=:studentID");
theQuery.setParameter("studentID", theId);
theQuery.executeUpdate();

}

}

其实我知道我需要改变的地方。但是我不太了解spring Rest Api。在我的代码中,我在我的 View (jsp 文件)中发送了许多属性,我在这里捕获了这些属性。但是 RestApi 没有 View 。我需要删除属性函数。但是我可以添加什么而不是属性函数呢?我是 RestApi 的新手,请帮助我,我该怎么做?

最佳答案

欢迎来到堆栈溢出。

Rest API 是这样工作的:

  • 您公开一个端点和一个动词(例如 GET at/students)
  • 一些客户端调用您的端点(调用承载您的应用程序的服务器)
  • 您的服务器将调用委托(delegate)给 Controller 函数(例如带有 @GetMapping("/students") 的函数)
  • Controller 函数向客户端发送响应(使用 spring,您的方法返回一个对象或 ResponseEntity)

REST API 接收请求、处理所述请求(以及请求数据(如果存在))并通常返回一些数据以及指示操作是否成功的状态代码。

在 spring 中你可以做这样的事情:

@GetMapping("/students")
ResponseEntity<List<Student>> listStudents() {
List<Student> stds = getStudents(); // call some service or DB
return new ResponseEntity<>(stds, HttpStatus.OK);
}

当您向/students 发出 GET 请求时,spring 会将请求的处理委托(delegate)给 listStudents 方法,该方法将获取学生并返回数据。

REST API 通常使用 JSON,因此您将返回的学生列表将序列化为 json 列表。

如果你想自定义学生的 json 结构,你可以使用 Jackson:

public class Student {
@JsonProperty("cool_name") private String name;
// getters and setter
}

rest api 不适用于 View 或 JSP。它们通常处理 HTTP 请求和响应。

如果您使用的是 spring mvc 而不是 spring boot,请查看这篇文章: https://viralpatel.net/blogs/spring-4-mvc-rest-example-json/

如果你可以使用 spring boot(我强烈推荐),检查这个: https://spring.io/guides/gs/rest-service/

您还应该使用 @RestController 注释您的 REST Controller ,以便它们自动处理 rest 调用。

希望这对您有所帮助,欢迎来到 stack overflow

关于java - Spring MVC 转换 Spring Rest Api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56870559/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com