Spring boot REST应用程序返回HTML而不是JSON,Angular应用程序无法识别它

Spring boot REST应用程序返回HTML而不是JSON,Angular应用程序无法识别它,html,json,angular,spring-boot,Html,Json,Angular,Spring Boot,我有一个由生成的Spring Boot应用程序,我无法让它生成JSON而不是HTML,代码如下: [@CrossOrigin(origins="http://localhost:4200",maxAge=3600) @RestController @RequestMapping public class UsuariosController { @Autowired UsuariosService ser; @GetMapping(path = "/entrar/{usu}/{p

我有一个由生成的Spring Boot应用程序,我无法让它生成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 web浏览器的结果

这是反压缩过程方法:

    @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>
这就是功能:

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


这是firefox中的输出,这是因为您的返回类型不是可序列化的对象,您可以显式显示您的返回类型

试试下面的代码

[@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));
}

现在在Angular中使用此代码

this.lo.verifyUserPass(this.usu,this.pass).subscribe(usua=>{this.userloged=usua});

结果丢失,但更重要的是您尝试访问应用程序的URL!PS:将密码放入路径是一个安全问题!它正在生成JSON。你的问题是什么?好的,看起来你提到的“HTML”只是显示JSON的内部Firefox呈现?使用curl重试以验证。密码为SHA512encripted@PabloLleoGarcia即使是散列密码也是一个问题,因为API似乎使用它进行身份验证。顺便说一句:SHA512是一种散列方法,不是加密,但这在这里并不重要。而且你也不能在回复中返回密码!这些都不需要!我无法导入静态org.hibernate.type.TypeFactory.serializable;因为TypeFactory是删除线的
public class Usuarios implements serializable{
    //your pojo 
    }
this.lo.verifyUserPass(this.usu,this.pass).subscribe(usua=>{this.userloged=usua});