即使使用HttpStatus.BAD_REQUEST返回ResponseEntity,也要在API响应中获取HTTP响应代码200

时间:2018-09-05 15:21:54

标签: java spring-boot httpresponse

我使用了https://stackoverflow.com/a/16250729/351903中给出的解决方案-

@Path("api/path")
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public ResponseEntity<String> handshakeForTxn()
    {

       return new ResponseEntity<String>(HttpStatus.BAD_REQUEST);
    }

我仍然收到200条响应状态-

Server responded with a response on thread XNIO-3 task-2 2 < 200 2 < Content-Type: application/json 

尽管响应正文包含一个statusCodeValue,它设置为400-

{ "headers": {}, "body": null, "statusCode": "BAD_REQUEST", "statusCodeValue": 400 }

3 个答案:

答案 0 :(得分:0)

  1. 您需要删除

    @Produces(MediaType.APPLICATION_JSON)

RestController默认返回JSON。

  1. 您的控制器应类似于

    @RestController
    public class RegistrationController {
    
    @GetMapping("api/path")
    public ResponseEntity register() {
        return ResponseEntity.badRequest().build();
    }
    
    }
    
  2. 您可以在此处查看代码示例。 https://github.com/alex-petrov81/stackoverflow-answers/tree/master/bad-request-show-200

答案 1 :(得分:0)

正确的方法是

Response.noContent()。status(Response.Status.NOT_FOUND).build()

Response.ok()。entity(“”)。build();

答案 2 :(得分:0)

这对我有用-

对于200-

return Response.status(Response.Status.OK).entity("").build();

对于400-

return Response.status(Response.Status.BAD_REQUEST).entity("").build();