我用Java编写REST api,并使用Groovy和Spock进行测试。
@GetMapping(value = "/{id}")
public ResponseEntity<ExampleObj> findById(@PathVariable Long id) {
final ExampleObj dto = service.findById(id);
if (dto != null) {
return new ResponseEntity<ExampleObj>(dto, HttpStatus.OK);
}
return new ResponseEntity<ExampleObj>(dto, HttpStatus.NOT_FOUND);
}
@GetMapping(value = "/{name}")
public ResponseEntity<ExampleObj> findByName(@PathVariable String name) {
final ExampleObj dto = service.findByName(name);
if (dto != null) {
return new ResponseEntity<ExampleObj>(dto, HttpStatus.OK);
}
return new ResponseEntity<ExampleObj>(dto, HttpStatus.NOT_FOUND);
}
@Unroll
'findByName test'() {
when:
def response = restTemplate.getForEntity(url, ExampleObj)
then:
response.getStatusCode() == statusCode
where:
url | statusCode
'/endpoint/SomeName1' | HttpStatus.OK
'/endpoint/NotExistingName' | HttpStatus.NOT_FOUND
}
@Unroll
'findById test'() {
when:
def response = restTemplate.getForEntity(url, ExampleObj)
then:
response.getStatusCode() == statusCode
where:
url | statusCode
'/endpoint/1' | HttpStatus.OK
'/endpoint/2' | HttpStatus.NOT_FOUND
}
Spring无法区分“/{id}”和“/{name}”。它确实是模棱两可的,因为即使name是字符串,id是数字,name也可以是“43”的形式。因此,当您调用“/43”时,它可以被解释为一个名称(字符串“43”),也可以被解释为一个长的too(43)。
您可以使用类似于:
@GetMapping(value = "/")
public ResponseEntity<ExampleObj> findByName(@RequestParam("name") String name) {
...
我有一个Spring应用程序,在其中我声明了我的类,如下所示: 但是当我试图到达其中一个restendpoint时,我得到一个错误:并且它指定这两个方法为问题。我的印象是,如果我更改了请求参数,Spring不会通过以下帖子抱怨它们是相同的:http://www.coderanch.com/t/598675/Spring/handling-http-request-parameters但显然它仍然如
在我的Spring Boot应用程序中有以下两个方法: 我想通过(自动生成)或(,如果可用的话)来。 java.lang.IllegalStateException:映射到“/user/dis1”的处理程序方法不明确:{com.mua.cse616.model.user com.mua.cse616.controller.usercontroller.one(java.lang.long),com
我正在使用JBoss6.1、Spring3.2、hibernate验证以及最近启用的CORS支持。请求与GET方法配合良好。如果使用请求方法POST,我希望控制器返回405。但我得到的是http状态码400。我在jboss日志中启用了跟踪,发现spring返回了错误的处理程序。应用程序只有一个控制器接受POST请求方法,其余控制器定义为只接受GET方法。每当使用POST请求方法对这些控制器(用GE
问题内容: 任何人都可以澄清一下下面的过程是否是正确的处理流程流的方法,而没有任何流缓冲区已满和阻塞问题 我正在从Java程序中调用外部程序,正在使用ProcessBuilder来构建流程,执行之后 我正在使用一种方法来处理流程 在我的方法中,我试图处理流程流 readStream方法用于读取我的流文本。 问题答案: 不,那不是正确的方法。 首先,在某些系统上,您的代码将永远停留在调用中,因为该过
使用Spring Boot 2.4.5和IntelliJ 2021.2。迁移后 到 每次我访问。页面上写着: 获取错误未定义/v3/api文档 当我检查日志时: java.lang.IllegalStateException:为“/v3/api文档”映射的不明确处理程序方法:{public org.springframework.http.ResponseEntity springfox.docu
我正在为Spring MVC中的异常处理开发示例演示应用程序。我正在尝试使用@ControllerAdvice处理异常 我遵循了本链接中描述的步骤。 但是当我运行我的应用程序时,我得到了以下错误 以下是我正在学习的课程 应用程序异常。JAVA 控制器类 ApplicationExceptionController。JAVA 下面是GlobalExceptionHandler类 GlobalExce