簡體   English   中英

如何在響應對象中設置狀態代碼 400

[英]Ho to set status code 400 in response object

我正在使用 javax.ws.rs-api 中的 Response 對象,即使我可以設置像 Response.status(Response.status.BAD_REQUEST).build() 這樣的狀態,返回的響應代碼始終為 200,響應主體包含 statusInfo表示 BAD_REQUEST 的參數。 有沒有辦法根據服務器端輸入的一些驗證將響應代碼設置為 400?

不是僅僅設置響應狀態,而是從服務層拋出錯誤並讓它傳播到控制器。 在控制器中你可以有類似的東西

@Controller
public class MyService {
    @RequestMapping(value = "your api url path", method = RequestMethod.GET, produces = "application/
    public Response jsonAccounts(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        return Response.status(Response.Status.BAD_REQUEST).entity("Bad request received").build();
    }

    @ExceptionHandler(MyBadException.class)
    @ResponseStatus(value = HttpStatus.BAD_REQUEST, reason = "Bad request Request Exception")
    public void unexpectedError(HttpServletRequest request, Exception 
        log.debug("return HttpStatus.BAD_REQUEST, unexpectedError due to Exception", e);
    }
}

這對我有用,我測試過。

 @GET
@Path("/")
@Produces(MediaType.APPLICATION_JSON)
public Response getTestResult() {
    logger.info("Requested Test Service");
    try {
        Object result = "";[enter image description here][1]
      return  Response.status(Response.Status.BAD_REQUEST)
              .entity(result).build();
    } catch (Exception e) {
        return Response.ok("error", e.getMessage()).build();
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM