我使用spring MVC来创建一个简单的JSON API,使用基于@responsebody
的方法,如下所示。(我已经有一个直接生成JSON的服务层。)
@RequestMapping(value = "/matches/{matchId}", produces = "application/json")
@ResponseBody
public String match(@PathVariable String matchId) {
String json = matchService.getMatchJson(matchId);
if (json == null) {
// TODO: how to respond with e.g. 400 "bad request"?
}
return json;
}
问题是,在给定的场景中,什么是响应HTTP 400错误的最简单、最干净的方法?
我确实遇到过这样的做法:
return new ResponseEntity(HttpStatus.BAD_REQUEST);
...但我不能在这里使用它,因为我的方法的返回类型是String,而不是ResponseEntity。
不一定是最紧凑的方式,但相当干净的海事组织
if(json == null) {
throw new BadThingException();
}
...
@ExceptionHandler(BadThingException.class)
@ResponseStatus(value = HttpStatus.BAD_REQUEST)
public @ResponseBody MyError handleException(BadThingException e) {
return new MyError("That doesnt work");
}
编辑如果使用spring 3.1+可以在异常处理程序方法中使用@ResponseBody,否则使用modelandview
或其他东西。
https://jira.springsource.org/browse/spr-6902
像这样的方法应该行得通,我不确定是否有更简单的方法:
@RequestMapping(value = "/matches/{matchId}", produces = "application/json")
@ResponseBody
public String match(@PathVariable String matchId, @RequestBody String body,
HttpServletRequest request, HttpServletResponse response) {
String json = matchService.getMatchJson(matchId);
if (json == null) {
response.setStatus( HttpServletResponse.SC_BAD_REQUEST );
}
return json;
}
将返回类型更改为responseEntity<>
,则可以使用下面的400
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
和正确的请求
return new ResponseEntity<>(json,HttpStatus.OK);
更新1
在spring 4.1之后,ResponseEntity中的帮助器方法可以用作
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null);
而且
return ResponseEntity.ok(json);
我使用Spring MVC作为一个简单的JSON API,使用基于的方法,如下所示。(我已经有一个直接生成JSON的服务层。) 在给定的场景中,最简单、最干净的HTTP 400错误响应方式是什么? 我确实遇到了这样的方法: ...但是我不能在这里使用它,因为我的方法的返回类型是字符串,而不是响应实体。
问题内容: 我将Spring MVC用于简单的JSON API,其基础方法如下所示。(我已经有一个直接生成JSON的服务层。) 问题是,在给定的情况下,最简单,最干净的响应HTTP 400错误的方法是什么? 我确实遇到过类似的方法: …但是我不能在这里使用它,因为我的方法的返回类型是String,而不是ResponseEntity。 问题答案: 将返回类型更改为,则可以在下面使用400 并要求正确
问题内容: 我在SpringMVC项目中将新的Java API(JSR 353)用于JSON。 这个想法是生成一些Json数据并将其返回给客户端。我所拥有的控制器看起来像这样: 当我访问它时,我没有得到JSON的预期表示,而是得到了这些: 为什么是这样?到底是怎么回事?以及如何使其正确返回预期的JSON? 问题答案: 当您意识到新的JSR 353 API 没有特殊要求时,答案很简单。相反,在这种情
我将对象作为JSON字符串存储在数据库中。我想制作一个公开这些字符串的REST服务。然而,当我编写方法时,我返回的字符串中的引号被转义了。例如,我包含了一个返回字符串的方法,
问题内容: 我正在将Spring Boot与基于@ResponseBody的方法结合使用,如下所示: 我尝试了一些典型的方法,例如: res.setStatus(HttpStatus.NOT_FOUND.value()); 新的ResponseEntity(HttpStatus.BAD_REQUEST); 但是我需要返回Response。 如果视频为空,如何在此处返回404状态代码? 问题答案:
我正在使用基于@ResponseBody的spring boot方法,如下所示: 我尝试了一些典型的方法,如: res.setstatus(httpstatus.not_found.value()); 新建ResponseEntity(httpstatus.bad_request); 但我需要回复。 如果视频为空,如何返回404状态码?