Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';t访问API端点_Java_Spring_Spring Boot_Rest_Code Coverage - Fatal编程技术网

Java Can';t访问API端点

Java Can';t访问API端点,java,spring,spring-boot,rest,code-coverage,Java,Spring,Spring Boot,Rest,Code Coverage,因此,我最近开始学习Spring,学习了一门小课程,在这门课程中,我们创建了一个market api,开始时,我们创建了一个简单的hello world端点来进行测试。最近我们刚刚创建了一个用于访问产品列表的端点,但似乎所有请求都返回404错误,因为这个错误似乎与控制器有关,我认为不需要发布所有代码 这是我的控制器ProductController.java,我只添加了前两个方法的映射(因为我仍在尝试修复此错误) 导入org.springframework.beans.factory.anno

因此,我最近开始学习Spring,学习了一门小课程,在这门课程中,我们创建了一个market api,开始时,我们创建了一个简单的hello world端点来进行测试。最近我们刚刚创建了一个用于访问产品列表的端点,但似乎所有请求都返回404错误,因为这个错误似乎与控制器有关,我认为不需要发布所有代码

这是我的控制器
ProductController.java
,我只添加了前两个方法的映射(因为我仍在尝试修复此错误)


导入org.springframework.beans.factory.annotation.Autowired;
导入org.springframework.web.bind.annotation.GetMapping;
导入org.springframework.web.bind.annotation.PathVariable;
导入org.springframework.web.bind.annotation.RequestMapping;
导入org.springframework.web.bind.annotation.RestController;
@RestController
@请求映射(“/products”)
公共类产品控制器{
@自动连线
私人产品服务;
@GetMapping(“/all”)
公共列表getAll(){
return productService.getAll();
}
@GetMapping(“/{productId}”)
公共可选getProduct(@PathVariable(“productId”)int productId){
return productService.getProduct(productId);
}
公共可选getByCategory(int categoryId){
return productService.getByCategory(categoryId);
}
公共产品储蓄(产品){
返回产品服务。保存(产品);
}
公共布尔删除(int-productId){
返回productService.delete(productId);
}
}
我还必须处理一个未找到的bean,该bean通过使用将域对象转换为dto(反之亦然),并出现以下错误:

我确保用
@Mapper(componentModel=“spring”)

我设法解决了这个问题(来源于另一个学生的评论)


导入org.springframework.boot.SpringApplication;
导入org.springframework.boot.autoconfigure.springboot应用程序;
@SpringBootApplication(scanBasePackages={“com.platzi.market.persistence.mapper.ProductMapper”,})
公共类平台MarketApplication{
公共静态void main(字符串[]args){
运行(PlatziMarketApplication.class,args);
}
}
但是我不确定这是否会对controller类造成一些干扰

您正在访问正确的端点吗

这是我的
应用程序。属性

spring.profiles.active=dev
server.servlet.context-path=/platzi-market/api
这是活动的
dev
配置文件(
application-dev.properties

因此,在我的控制器中访问所有产品的端点应该是:
localhost:8080/platzi-market/api/products/all
,返回404

我还检查了我是否在使用https,所以我确保在Postman中使用http://这也返回了404

我仔细检查了终端中的输出,以确保使用了正确的端口和上下文路径:

2021-02-23 17:20:07.583  INFO 51334 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path '/platzi-market/api'
2021-02-23 17:20:07.594  INFO 51334 --- [           main] c.platzi.market.PlatziMarketApplication  : Started PlatziMarketApplication in 3.881 seconds (JVM running for 4.296)

如果您想检查代码的其余部分,这里有一个到repo的链接:,希望这能让您满意,因为我对错误XD发疯了

我可以重现您的问题。。。(使用EclipseST4.9.0)。 当以“SpringBootRunConfiguration”(在eclipse中)运行时,会出现上下文,但有一个适当的警告。我可以复制404错误页面(由于缺少
/error
映射!)

  • 我删除了(无用的)
    scanBasePackages
    ,发现上下文没有启动。(具有所描述的问题)

  • 为了
    build.gradle
    ,我添加了:

     plugins {
       ...
       id "com.diffplug.eclipse.apt" version "3.26.0" // Only for Eclipse
     }
    
    …如所述

  • 然后我(意识到没有生成mapperImpls)尝试通过
    gradle:bootRun
    运行,并在映射程序中发现以下生成/编译错误:

  • 类别映射中
    必须是
    “description”
    而不是
    “description”
  • Categoria
    中的
    productos
    缺少Getter/Setter
  • Producto
    中的
    categoria
    缺少Getter/Setter
  • 使用gradle应用这些修复程序(至少最初/每次,当mapper/dto发生变化时)应该*启动应用程序并访问
    loclahost:8080/platzi market/api/products/all

    *:I在空(不同的/h2/内存中)数据库上“测试”。(这意味着可能存在运行时错误。)


    热烈欢迎来到我们的家

    回顾您的回购协议,我可以向您推荐:

    • (下一步)创建一些测试(针对映射器、repo、控制器…)
    • 可能吧
    • 当然,不要:在公开回购中公开(真实的)产品凭证

    我不是Spring Boot用户,但是
    scanBasePackages
    可能需要一个包名而不是类名。应该是
    scanBasePackages={“com.platzi.market.persistence.mapper”}
    没有注意到,少担心一件事,谢谢!您好,我刚刚将这些更改添加到DTO类和映射器中,但问题仍然存在,如何查看VSCode中的编译错误?。我将试用Eclipse,以确保VSCode不会引起任何问题。(希望不是因为我真的很喜欢它,哈哈)。疯狂的错误不是由控制器引起的,而是其他层,我希望在抛出异常时修复此类错误。PS:谢谢你欢迎我进入春天,到目前为止,我非常喜欢Laravel和dotNet!只是尝试在Eclipse中运行应用程序,结果相同,可能是数据库连接错误,我将尝试sqllite,以确保在启动gradle构建时(例如,从任何IDE/terminal/shell启动
    /gradlew bootRun
    ):
    “错误:未知属性”描述“在结果类型分类中。您的意思是“描述”?“
    spring boot中的sql lite是…但不像VScode中的(例如)、hsql、…mapstruct那样“开箱即用”。。。
    2021-02-23 17:20:07.583  INFO 51334 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path '/platzi-market/api'
    2021-02-23 17:20:07.594  INFO 51334 --- [           main] c.platzi.market.PlatziMarketApplication  : Started PlatziMarketApplication in 3.881 seconds (JVM running for 4.296)
    
     plugins {
       ...
       id "com.diffplug.eclipse.apt" version "3.26.0" // Only for Eclipse
     }