Spring boot REST应用程序返回HTML而不是JSON,Angular应用程序无法识别它
我有一个由生成的Spring Boot应用程序,我无法让它生成JSON而不是HTML,代码如下: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
[@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});