Ответ Rest API 404 Не обнаружен при запуске проекта с приложением Java - PullRequest
0 голосов
/ 28 мая 2020

У меня есть приложение с весенней загрузкой, я хочу запустить это приложение с Java Application, но когда я вызываю rest API, он всегда отвечает 404, но с Tomcat server все в порядке. Не знаю, почему

Вот мое основное приложение

package com.secret;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
public class SecretApplication extends SpringBootServletInitializer{

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

вот мой файл pom. xml

<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.secret</groupId>
    <artifactId>MySecret</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.6.RELEASE</version>
        <relativePath />
    </parent>

    <dependencies>

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

        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.3.1</version>
        </dependency>

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

    </dependencies>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>11</java.version>
    </properties>

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

Вот мой контроллер

package com.secret.demo;

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.secret.common.dto.ResponseBodyDto;

@CrossOrigin
@RestController
@RequestMapping("/demo")
public class Demo {

    @GetMapping(value = "/user")
    public ResponseEntity<Object> getUserByUsername() throws Exception{

        ResponseBodyDto<Object> dto = new ResponseBodyDto<>();
        dto.setData("Ok");
        return new ResponseEntity<Object>(dto, HttpStatus.OK);
    }
}

И когда я запускаю свое приложение с помощью Java Application, всегда получаю 404 при вызове rest API http://localhost: 8080 / MySecret / demo / user

{
    "timestamp": "2020-05-28T08:03:05.090+0000",
    "status": 404,
    "error": "Not Found",
    "message": "No message available",
    "path": "/MySecret/demo/user"
}

Но когда я запускаю свое приложение до Tomcat Server, оно все равно успешно

{
    "code": "R_200",
    "message": "Your request has been processed successfully.",
    "totalRecord": 0,
    "data": "Ok"
}

Я больше не хочу использовать Tomcat Server для запуска моего приложения, помогите мне, пожалуйста !!!

1 Ответ

1 голос
/ 28 мая 2020

Когда вы запускаете свой проект как jar (java приложение), вы должны использовать localhost: 8080 / demo / user

Когда вы запускаете свое приложение на сервере (jboss для примера), имя вашего war файл - это путь root.

localhost: 8080 / MySecret / demo / user

Думаю, ваш военный файл - MySecret.war.

Вот почему разница между первым и вторым. Поскольку у вас нет базового пути, / demo / user - это путь к вашей конечной точке.

...