spring-boot при возврате с использованием ResponEntity get response: содержимое не отображается из-за конца ввода - PullRequest
0 голосов
/ 30 марта 2020

Я хочу прочитать некоторые данные из базы данных и использовать org.springframework.http.ResponseEntity в качестве класса ответа, используя API, когда я возвращаю API, используя String, это выглядит хорошо, но когда я меняю return, используя ResponseEntity..i, всегда получаю код ответа 500: нет содержимого для отображения из-за конца ввода

здесь мой класс контроллера я использую

import com.access.cargo.placement.config.JwtConstants;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;

@RestController
public class AcceptanceRestController {

@Autowired
    AwbService awbService;

 @RequestMapping(value = "/awb-koli/{code}/scan", method = RequestMethod.POST)
    public ResponseEntity getStorageBin(@RequestHeader(value = JwtConstants.TOKEN_HEADER) String token, @PathVariable("code") Long code) {
        authClient.authenticate(token);

        Collection<String> authRoles = new LinkedList<>();
        authRoles.add("ROLE_OUTGOING_ADMIN");
        authRoles.add("ROLE_OUTGOING_ACCEPTANCE");
        if (!isAuthorized(token, authRoles)) {
            String msg = "You dont have authorization....";
            return new ResponseEntity<>(msg, HttpStatus.UNAUTHORIZED);
        }

        AwbKoli resp = new AwbKoli();
        resp = awbService.getAwbKoli(token, code);

        return new ResponseEntity<>(resp, HttpStatus.OK);
    }
}

здесь мой репо

import com.access.cargo.awb.model.entity.AwbKoli;
import org.springframework.data.jpa.repository.JpaRepository;

@Repository
public interface AwbRepo extends JpaRepository<AwbKoli, Long> {

    AwbKoli findFirstByAwbKoliAndState(AwbKoli awbKoli, Integer state);

}

здесь мой сервис

import com.access.cargo.awb.repo.AwbRepo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class AwbService {

    @Autowired
    AwbRepo repo;

public AwbKoli getAwbKoli(Long id) {
        return repo.findById(id).orElse(null);
    }


}

здесь моя сущность

import lombok.Data;
import org.hibernate.annotations.DynamicUpdate;

import javax.persistence.*;
import java.io.Serializable;

@Data
@Entity
@Table(name = "awb_koli")
@DynamicUpdate
public class AwbKoli implements Serializable {

    private static final long serialVersionUID = -805351090352429123L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Long id;

    @Column(name = "code")
    private String code;

    @ManyToOne
    @JoinColumn(name = "awb", referencedColumnName = "id")
    private Awb awb;

}

здесь моя конфигурация

spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/db_access_cargo?useLegacyDatetimeCode=false&serverTimezone=Asia/Jakarta
spring.datasource.username=root
spring.datasource.password=
#___JPA:
spring.jpa.database=default
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.jpa.hibernate.ddl-auto=update
logging.level.org.hibernate.SQL=debug
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=trace

и здесь моя пом. 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.2.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.access.cargo</groupId>
    <artifactId>acceptance</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>acceptance-service</name>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Hoxton.SR1</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt-api</artifactId>
            <version>0.10.5</version>
        </dependency>
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt-impl</artifactId>
            <version>0.10.5</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt-jackson</artifactId>
            <version>0.10.5</version>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>


    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <finalName>access-cargo-acceptance-service</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

и этот результат API, я всегда получаю

resultAPI

Curl curl -X POST "http://localhost: 8080 / access-car go -acceptance-сервис / AWB-Коли / 231 / скан"-H "принимаем: / " -H" Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhdXRoLXRva2VuIiwiYXVkIjoiRlJPTlRFTkRfV0VCIiwidWlkIjoiYWRtaW4uYWdlbnQjMSIsImlzcyI6IkFDQ0VTU19DQVJHTyIsImV4cCI6MTU4NDIxNTA0MywicmlkIjoicXdlcnR5IiwiaWF0IjoxNTg0MTU1MDQzfQ.GpBfRMFoK - vU1L9ddx1H3B4KixbB4zFslyKYXer VDBTjELSbeGZsdKzzQDx7RsaOu757zxO8LtHtR3bO5vAIw "

URL-адрес запроса http://localhost: 8080 / access-car go -acceptance-service / awb-koli / 231/10 scan * 1042 1044 * Ответ сервера Сведения о коде 500 Недокументированное

Ошибка: Тело ответа Загрузить Нет содержимого для сопоставления из-за конца ввода

Заголовки ответа контроль кэша: без кэширования, без хранения, max-age = 0, обязательное повторное подтверждение соединения: закрыть длина контента: 37 тип контента: текст / обычный текст; кодировка = UTF-8 дата: понедельник, 30 марта 2020 г. 11:03:09 GMT истекает: 0 прагма: no-cache x-content-type-options: nosniff x-frame-options: DENY x-xss-protection: 1; mode = block

Ответы Код Описание 200 OK

Пример значения Модель {"body": {}, "statusCode": "100 CONTINUE "," statusCodeValue ": 0}

i dont know what to fix this...please anyone help..

Ответы [ 2 ]

0 голосов
/ 31 марта 2020

Для отображения Джексона требуется конструктор по умолчанию. Просто добавьте @NoArgsConstructor в ваш класс AwbKoli.

0 голосов
/ 30 марта 2020

Согласно документу Spring, ResponseEntity похож на ResponseBody, он использует HttpMessageConverter для сериализации возвращаемого значения, а если вы вернете строковое значение, он запишет в ответ без преобразования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...