当前位置: 首页 > 知识库问答 >
问题:

APRI REST http请求进入404

唐兴发
2023-03-14

我是新来的SpringBoot和API REST,我曾经在Struts MVC SOAP项目中开发

当我尝试在浏览器上运行API REST或使用curl时,它会进入404。

这是我的projec,我使用的ide是IntelliJ IDEA 2021.3.3(社区版):

关于ide的信息

IntelliJ IDEA 2021.3.3 (Community Edition)
Build #IC-213.7172.25, built on March 15, 2022
Runtime version: 11.0.14.1+1-b1751.46 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Windows 10 10.0
GC: G1 Young Generation, G1 Old Generation
Memory: 1776M
Cores: 8
Non-Bundled Plugins:
    org.jetbrains.kotlin (213-1.6.20-release-275-IJ6777.52)
    dev.flikas.idea.spring.boot.assistant.plugin (0.2.4)

Kotlin: 213-1.6.20-release-275-IJ6777.52

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.6</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.restweek</groupId>
    <artifactId>restweekend</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>restweekend</name>
    <description>Demo project for Spring Boot Rest</description>
    <properties>
        <java.version>11</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.13.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.22</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

控制器

package com.restweek.restweekend.controller;

import com.restweek.restweekend.elementi.Product;
import com.restweek.restweekend.services.implementazioni.RichiestaImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/radice")
public class ControllerProva {

    @Autowired
    private RichiestaImpl richiesta;

    @GetMapping("/product")
    public List<Product> getProduct()
    {
        List<Product> products = richiesta.findAll();
        return products;
    }
}

物体

package com.restweek.restweekend.elementi;

public class Product {
    private int id;
    private String pname;
    private String batchno;
    private double price;
    private int noofproduct;

    public Product() {

    }

    public Product(int id, String pname, String batchno, double price, int noofproduct) {
        super();
        this.id = id;
        this.pname = pname;
        this.batchno = batchno;
        this.price = price;
        this.noofproduct = noofproduct;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getPname() {
        return pname;
    }

    public void setPname(String pname) {
        this.pname = pname;
    }

    public String getBatchno() {
        return batchno;
    }

    public void setBatchno(String batchno) {
        this.batchno = batchno;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public int getNoofproduct() {
        return noofproduct;
    }

    public void setNoofproduct(int noofproduct) {
        this.noofproduct = noofproduct;
    }
}

界面

package com.restweek.restweekend.services.interfaccie;

import com.restweek.restweekend.elementi.Product;
import lombok.Data;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public interface Richiesta {

    List<Product> findAll();

}

实施

package com.restweek.restweekend.services.implementazioni;


import com.restweek.restweekend.elementi.Product;
import com.restweek.restweekend.services.interfaccie.Richiesta;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
public class RichiestaImpl implements Richiesta {

    @Override
    public List<Product> findAll()
    {
        ArrayList<Product> products = new ArrayList<Product>();
        products.add(new Product(100, "Mobile", "CLK98123", 9000.00, 6));
        products.add(new Product(101, "Smart TV", "LGST09167", 60000.00, 3));
        products.add(new Product(102, "Washing Machine", "38753BK9", 9000.00, 7));
        products.add(new Product(103, "Laptop", "LHP29OCP", 24000.00, 1));
        products.add(new Product(104, "Air Conditioner", "ACLG66721", 30000.00, 5));
        products.add(new Product(105, "Refrigerator ", "12WP9087", 10000.00, 4));
        return products;
    }
}

开始上课

package com.restweek.restweekend.start;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class RestweekendApplication {

    public static void main(String[] args) {
        SpringApplication.run(RestweekendApplication.class, args);
    }

}

cmd中的卷曲反应

C:\Users\franc>curl http://localhost:8080/radice/product
{"timestamp":"2022-04-09T14:58:34.741+00:00","status":404,"error":"Not Found","path":"/radice/product"}
C:\Users\franc>

我是否把理解这个问题所需的一切都写好了?

共有1个答案

方焱
2023-03-14

问题是,Spring框架甚至没有提取和创建您的bean。将RestweekendApplication移动到包com。Rest周。restweekend如下:

java prettyprint-override">package com.restweek.restweekend;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class RestweekendApplication {
    public static void main(String[] args) {
        SpringApplication.run(RestweekendApplication.class, args);
    }
}

@SpringBootApplication封装了@Configance@EnableAutoConfigance@ComponentScan注释及其默认属性。@ComponentScan的默认值意味着@ComponentScan所使用的包上的所有子包都会被扫描。这就是为什么在项目的基本包中包含主类通常是一个好的实践。

 类似资料:
  • 本文向大家介绍请求如何进入ASP.NET MVC框架,包括了请求如何进入ASP.NET MVC框架的使用技巧和注意事项,需要的朋友参考一下 一、前言   对于WebForm开发,请求通常是一个以.aspx结尾的url,对应一个物理文件,从代码的角度来说它其实是一个控件(Page)。而在MVC中,一个请求对应的是一个Controller里的Action。熟悉asp.net的朋友都知道,asp.net

  • 问题内容: 因此,我一直将以下代码放入我的React JS组件中,而我基本上是试图将两个API调用都置于一种称为的状态,但是以下代码却出现了错误: 现在,我猜我无法像我一样添加两个数据源,但是还可以怎么做呢?我只希望将来自该API请求的所有数据置于一种状态。 这是我目前收到的错误: 谢谢 问题答案: 您不能将数组“添加”在一起。使用array.concat函数(https://developer.

  • 发送请求成功了,并且接口返回的状态值是200,但是却报错,没写then和catch

  • 问题内容: 我正在尝试使用接收输入: 但是该命令只是被跳过而返回一个空字符串。我怎么解决这个问题? 问题答案: 该方法不会占用整数后的换行符,因此在调用该方法时,它仅读取整数后的换行符。 例 如果您输入以下内容: 该调用使用了而不是换行符: 现在,当您调用它时,它消耗了第一行的其余部分,该行仅包含换行符。 解 尝试丢弃整数后的其余行: 或者使用一致的方式读取每一行,然后自己将字符串解析为整数:

  • 我向服务器发出POST请求以生成CSV文件,POST请求的响应是我要写入文件的CSV数据。 我永远不知道CSV文件的大小(它可以是10MB,100MB或1000MB),因此没有内容长度的头。 我已经编写了一个函数,可以下载并向服务器发出POST请求,生成CSV文件并将响应写入CSV文件。然而,我正在努力与进步吧。 如何添加进度条?

  • 问题内容: 我正在Go中为Linux编写一个ShareX克隆,该克隆通过http POST请求将文件和图像上传到文件共享服务。 我目前正在使用http.Client和Do()发送请求,但我希望能够跟踪较大文件的上传进度,这些文件最多需要一分钟的时间来上传。目前,我能想到的唯一方法是手动在端口80上打开与网站的TCP连接,并以块的形式写入HTTP请求,但我不知道它是否可以在https网站上使用,我不