REST-приложение Spring boot возвращает HTML вместо JSON и Angular приложение не распознает его - PullRequest
0 голосов
/ 27 января 2020

У меня есть приложение Spring Boot, сгенерированное https://start.spring.io/, и я не могу заставить его создать JSON вместо HTML, это код:

[@CrossOrigin(origins="http://localhost:4200",maxAge=3600)
@RestController
@RequestMapping
public class UsuariosController {
@Autowired
    UsuariosService ser;
    @GetMapping(path = "/entrar/{usu}/{pass}", produces = MediaType.APPLICATION_JSON_VALUE)
public Usuarios entrar(@PathVariable("usu") String usu,@PathVariable("pass") String pass){
    return ser.comprobarPass(usu, pass);
}

}

И это результат в Firefox веб-браузере. 1

это метод de comprobarPass:

    @Override
public Usuarios comprobarPass(String usu, String pass) {
    return rep.compruebaUsuariopass(usu, pass);
}}

это является частью зависимостей POM. XML:

    <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-web</artifactId>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <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>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.10.1</version>
            </dependency>
 <dependency>

Это код Angular:

    this.lo.verifyUserPass(this.usu,this.pass).subscribe((usua)=>{this.userloged=usua});
console.log("valor: "+this.userloged)

И это функция:

  verifyUserPass(usu:string,pass:string){
return this.http.get<Usuarios>(this.path+"entrar/"+usu+"/"+sha512.sha512(pass));

}

И это вывод в firefox введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 27 января 2020

Теперь работает с этим кодом в Angular

this.lo.verifyUserPass(this.usu,this.pass).subscribe(usua=>{this.userloged=usua});
0 голосов
/ 27 января 2020

Это потому, что ваш тип возвращаемого значения не является сериализуемым объектом, и вы можете явно указать свой тип возвращаемого значения.

Попробуйте следующий код:

[@CrossOrigin(origins="http://localhost:4200",maxAge=3600)
@RestController
@RequestMapping
public class UsuariosController {
@Autowired
    UsuariosService ser;
    @GetMapping(path = "/entrar/{usu}/{pass}", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Usuarios> entrar(@PathVariable("usu") String usu,@PathVariable("pass") String pass){
    return ResponseEntity.ok().body(ser.comprobarPass(usu, pass));
}

И ваше pojo в сериализуемом

public class Usuarios implements serializable{
    //your pojo 
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...