Jig*_*aik 11 spring-boot spring-rest
我正在尝试设计一个rest api,下面是我的控制器代码。
当我调用http://localhost:8080/ 时,响应很好,但是如果我点击http://localhost:8080/api/ca它会触发javax.servlet.ServletException: No adapter for handler [...CaDetailController@48224381]: The DispatcherServlet configuration needs to include a HandlerAdapter that supports this handler
@RestController("/api")
public class CaDetailController {
private static final Logger logger = LoggerFactory.getLogger(GetClassLoader.class.getClass());
@Autowired
CaService caService;
@RequestMapping(path = "/ca", method = RequestMethod.GET)
public @ResponseBody List<CaDetail> getCorporateActions() {
logger.info("CaDetailController.findAllCaDetails()");
return caService.findAllCaDetails();
}
@RequestMapping(path = "/ca/{caId}", method = RequestMethod.GET)
public @ResponseBody List<CaDetail> getCorporateActions(@PathParam("caId") long caId) {
logger.info("CaDetailController.getCorporateActions() : caId : " + caId);
return caService.findAllCaDetails();
}
}
Run Code Online (Sandbox Code Playgroud)
更新了控制器。
@RestController
@RequestMapping("/api/ca")
public class CaDetailController {
private static final Logger logger = LoggerFactory.getLogger(GetClassLoader.class.getClass());
@Autowired
CaService caService;
@GetMapping(path = "/")
public @ResponseBody List<CaDetail> getCorporateActions() {
logger.info("CaDetailController.findAllCaDetails()");
return caService.findAllCaDetails();
}
@GetMapping(path = "/{caId}")
public @ResponseBody List<CaDetail> getCorporateActions(@PathParam("caId") Long caId) {
logger.info("CaDetailController.getCorporateActions() : caId : " + caId);
return caService.findAllCaDetails();
}
}
Run Code Online (Sandbox Code Playgroud)
Gre*_*zak 14
为清楚起见,修复是:
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api/ca")
public class CaDetailController {
@GetMapping
public String healthcheck1() {
return "ok!";
}
@GetMapping(path = "health")
public String healthcheck2() {
return "ok again!";
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用 URL 调用此端点: http://localhost:8080/api/ca和 http://localhost:8080/api/ca/health
(假设默认 Spring Boot Tomcat 配置)。
小智 6
不要将 ("/api") 值添加到 @RestController Annotation,将其添加到 @RequestMapping
@RestController
@RequestMapping("api/")
...
Run Code Online (Sandbox Code Playgroud)
小智 5
尝试这个
@RestController
@RequestMapping("/api")
public class CaDetailController {
Run Code Online (Sandbox Code Playgroud)
代替
@RestController("/api")
public class CaDetailController {
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7955 次 |
| 最近记录: |