我用 Spring boot and Rest Template 编写了一个 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。 每当我运行代码时,它都会在本地主机中运行:8080。但是当我转到网址时 http://localhost:8080/api/bean?name=User1
它给
请求错误 (invalid_request(
无法处理您的请求。无法处理请求 此 可能是由配置错误或格式错误引起的 请求。
谁能帮助我了解问题以及如何解决它? 这段代码可以正常工作,但是在我的办公室里,我坐在代理网络后面,这段代码像这样失败!有谁知道为什么会这样!
编辑: 运行应用程序后,我可以看到进入控制器后,以下内容已登录控制台:
2017-08-25 16:43:18.325 信息 1056 --- [ main] s.w.s.m.m.a.RequestMappingHandlerAdapter : 查找 @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@d3d15a: 启动日期 [2017 年 8 月 25 日星期五 16:43:16 IST ];上下文层次结构的根 2017-08-25 16:43:18.419 信息 1056 --- [主要] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapping "{[/greeting],methods=[GET]}" 到公共问候。问候 你好。GreetingController.greeting(java.lang.String( 2017-08-25 16:43:18.422 信息 1056 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapping "{[/error]}" to 公共 org.springframework.http.ResponseEntity>org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest( 2017-08-25 16:43:18.422 信息 1056 --- [主要] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapping "{[/error],produces=[text/html]}" to public 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信息 1056 --- [主要] o.s.w.s.handler.SimpleUrlHandlerMapping : 映射的 URL 路径 [/webjars/] 到类型 [类] 的处理程序上 org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2017-08-25 16:43:18.444信息 1056 --- [主要] o.s.w.s.handler.SimpleUrlHandlerMapping : 映射的 URL 路径 [/] 到 类型 [类] 的处理程序 org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2017-08-25 16:43:18.495 信息 1056 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : 映射的 URL 路径 [/**/favicon.ico] 到类型 [class 的处理程序 org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2017-08-25 16:43:18.633 信息 1056 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : 为 JMX 注册 bean 启动时的曝光 2017-08-25 16:43:18.817 信息 1056 --- [
主要] s.b.c.e.t.TomcatEmbeddedServletContainer:Tomcat 开始于 端口: 8080 (http( 2017-08-25 16:43:18.833 信息 1056 --- [
主要] 你好。应用程序 : 已启动应用程序 在 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);
}
}
豆类:
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;
}
}
使用弹簧启动 1.5.6 发布版制作的应用程序
这与你的 spring-boot 应用程序无关。 如果您的应用程序日志中有异常,请告诉我们有关堆栈跟踪的信息。在代码片段中,ID 未初始化,因此代码无法工作: 这是我测试的代码示例:
@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
批注的类的包的子包中,以便组件扫描程序可以看到它。