我使用Spring启动和Rest模板编写了一个Rest API。最简单的一个。这是我在控制器中编写的代码。
package wsJson;
import java.util.concurrent.atomic.AtomicLong;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api")
public class RestCon {
private AtomicLong id;
public Bean b;
@RequestMapping("/bean")
public Bean getBeans(@RequestParam(value="name")String name){
return new Bean(id.incrementAndGet(), name);
}
}
Bean很简单,主类只运行Spring Boot App。 每当我运行代码时,它都在localhost:8080中运行。但是当我转到URL时 http://localhost:8080/api/bean?name=User1
它给出了
请求错误(invalid_request)
您的请求无法处理。请求无法处理这个 可能是由于配置错误或可能是格式错误造成的 请求。
有谁能帮我理解这个问题以及如何解决它? 这段代码工作正常,但在我的办公室里,我坐在后面的代理网络,这段代码就像这样失败!有谁知道为什么会这样!
修改: 运行应用程序后,我可以在进入控制器后看到以下内容登录到控制台:
2017-08-25 16:43:18.325 INFO 1056 --- [主要] s.w.s.m.m.a.RequestMappingHandlerAdapter:寻找 @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@d3d15a: 启动日期[Fri Aug 25 16:43:16 IST 2017];上下文层次结构的根 2017-08-25 16:43:18.419 INFO 1056 --- [主要] s.w.s.m.m.a.RequestMappingHandlerMapping:已映射 “{[/ greeting],methods = [GET]}”公开招呼。祝贺 hello.GreetingController.greeting(java.lang.String)2017-08-25 16:43:18.422 INFO 1056 --- [主要] s.w.s.m.m.a.RequestMappingHandlerMapping:将“{[/ error]}”映射到 上市 org.springframework.http.ResponseEntity> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest) 2017-08-25 16:43:18.422 INFO 1056 --- [主要] s.w.s.m.m.a.RequestMappingHandlerMapping:已映射 “{[/ error],produ = [text / html]}”上市 org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) 2017-08-25 16:43:18.444 INFO 1056 --- [主要] o.s.w.s.handler.SimpleUrlHandlerMapping:映射的URL路径 [/ webjars / ]到[class]类型的处理程序 org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2017-08-25 16:43:18.444 INFO 1056 --- [主要] o.s.w.s.handler.SimpleUrlHandlerMapping:映射的URL路径[/ ]到 类型的处理程序[类 org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2017-08-25 16:43:18.495 INFO 1056 --- [主要] o.s.w.s.handler.SimpleUrlHandlerMapping:映射的URL路径 [/**/favicon.ico]到[class]类型的处理程序 org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2017-08-25 16:43:18.633 INFO 1056 --- [主要] o.s.j.e.a.AnnotationMBeanExporter:为JMX注册bean 启动曝光2017-08-25 16:43:18.817 INFO 1056 --- [
main] s.b.c.e.t.TomcatEmbeddedServletContainer:Tomcat开始了 港口:8080(http)2017-08-25 16:43:18.833 INFO 1056 --- [
main] hello.Application:启动应用程序 在3.063秒(JVM运行3.729)
主要课程:
package wsJson;
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);
}
}
bean class:
package wsJson;
public class Bean {
public long id;
public String name;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Bean(long id, String name) {
super();
this.id = id;
this.name = name;
}
}
使用spring-boot 1.5.6-RELEASE
制作的应用程序答案 0 :(得分:0)
这与你的spring-boot应用程序无关。 如果您的应用程序日志中有异常,请告诉我们堆栈跟踪。在您的代码段中,代码段未初始化,因此您的代码无法正常工作: 这是我测试的代码示例:
@SpringBootApplication
@RestController
@RequestMapping("/api")
public class TestApplication {
private AtomicLong id = new AtomicLong();
@RequestMapping("/bean")
public String getBeans(@RequestParam(value="name")String name){
return new Bean(id.incrementAndGet(), name).toString();
}
class Bean{
public Bean(long l, String name) {
}
}
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
在没有该代理的情况下在本地测试您的应用程序,以确保您的应用程序正常运行。
您发布了应用启动日志,看起来您的控制器不是映射器。也许您的控制器不会被应用程序扫描。
您的控制器必须位于包含由@SpringBootApplication
注释的类的包的子包中,以便组件扫描程序可以看到它。