我有一个Springboot应用程序(videoclub应用程序)。我认为没有必要向您展示所有代码,因为这将非常冗长。但效果很好。
班级
Film
和
FilmRepository
使用一些方法、控制器、数据库JPA和HTML文件。一切正常。
我不是在寻找一个代码解决方案,而是一个“概念”解决方案
,只是想知道我是否正确实现了REST服务。
我现在想添加一个非常简单的REST服务(添加一个类“MyRestController”),它只需在URL中添加电影名称即可搜索电影。
因此,除了我的控制器之外,我想添加这个RestController只是为了做一件简单的事情:如果我在URL中添加电影的名称,它将使用常规MVC方法进行搜索。
但加上我认为的解决方案,我就犯了这个错误:
出现意外错误(类型=未找到,状态=404)。
无可用消息
因此,当浏览HTML内容到页面以搜索电影时,并将其添加到
/buscar
电影名称(我在db中有)
/buscar/Interstellar
,显示之前的错误。
@CrossOrigin
@RestController
public class MyRestController {
@Autowired
private FilmRepository filmRepo;
@RequestMapping(value = "/buscar", method = RequestMethod.GET)
public ResponseEntity<List<Film>> getFilms(@RequestParam String Title) {
List<Film> pelis = (List<Film>) filmRepo.findByTitle(Title);
HttpStatus status = HttpStatus.OK;
ResponseEntity<List<Film>> response = new ResponseEntity<>(pelis, status);
return response;
}
}
得到这个错误让我觉得页面知道它必须做些什么,但可能在获取它时遇到了问题(可能是由于字符串、iterable事物、列表或类似的问题,JSON)。但我不知道rest服务背后的“理论”在MyRestController中是否正确。
电影存储库:
public interface FilmRepository extends CrudRepository<Film, Long>{
Iterable<Film> findByTitle(String Title);
}
(常规控制器中的MVC方法)
@RequestMapping("/buscar")
public ModelAndView processSearch(@RequestParam(value = "title", required = false) String title) {
if (title == null || title == "") {
Iterable<Film> films = filmRepo.findAll();
return new ModelAndView("buscar").addObject("films", films);
}
Iterable<Film> films = filmRepo.findByTitle(title);
return new ModelAndView("buscar").addObject("films", films);
}