为什么“ @PathVariable”在SpringBoot的接口上无法工作
简单的应用程序-Application.java
package hello;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
简单的界面-ThingApi.java
package hello;import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
public interface ThingApi {
// get a vendor
@RequestMapping(value = "/vendor/{vendorName}", method = RequestMethod.GET)
String getContact(@PathVariable String vendorName);
}
简单控制器-ThingController.java
package hello;import org.springframework.web.bind.annotation.RestController;
@RestController
public class ThingController implements ThingApi {
@Override
public String getContact(String vendorName) {
System.out.println("Got: " + vendorName);
return "Hello " + vendorName;
}
}
使用您最喜欢的SpringBoot入门级父级来运行此程序。用GET / vendor / foobar选中它,您将看到:Hello null
Spring认为’vendorName’是一个查询参数!
如果将控制器替换为未实现接口的版本,并将注释移入其中,如下所示:
package hello;import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ThingController {
@RequestMapping(value = "/vendor/{vendorName}", method = RequestMethod.GET)
public String getContact(@PathVariable String vendorName) {
System.out.println("Got: " + vendorName);
return "Hello " + vendorName;
}
}
工作正常。
这是功能吗?还是错误?
回答:
您只是错过@PathVariable
了工具
@Override public String getContact(@PathVariable String vendorName) {
System.out.println("Got: " + vendorName);
return "Hello " + vendorName;
}
以上是 为什么“ @PathVariable”在SpringBoot的接口上无法工作 的全部内容, 来源链接: utcz.com/qa/417128.html