![](/img/trans.png)
[英]Create and Return a custom Http response code in Java Spring Boot
[英]Spring Rest return a JSON response with a certain http response code
我是Spring的新手。 我有一个用Spring编写的REST api,但是我不知道如何返回带有自定义http响应代码的JSON响应。
我返回一个JSON响应,如下所示:
public String getUser(String id){
...
return jsonObj;
}
但它始终显示200 http ok状态代码。
这是我的问题:
如何同步响应JSON和HTTP代码?
在void函数中如何返回JSON响应和自定义HTTP代码?
使用@ResponseStatus
批注:
@GetMapping
@ResponseStatus(HttpStatus.ACCEPTED)
public String getUser(String id) {...}
另一种方法:如果要以编程方式决定要返回什么状态,可以使用ResponseEntity
。 将方法的返回类型更改为ResponseEntity<String>
,将为您提供像这样的DSL:
ResponseEntity
.status(NOT_FOUND)
.contentType(TEXT_PLAIN)
.body("some body");
这是我的工作方式,即从Spring Handler方法返回JSON。 我的技术有些过时,但仍然合理。
配置Jackson将以下内容添加到spring配置xml文件中:
<bean name="jsonView"
class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
</bean>
这样,Spring会将返回值转换为JSON并将其放置在响应的正文中。
创建一个实用程序方法来构建ResponseEntity的好处是,您将拥有多个处理程序方法。 代替样板代码,创建一种方法来执行标准工作。 ResponseEntity
是一个Spring类。
protected ResponseEntity<ResponseJson> buildResponse(
final ResponseJson jsonResponseBody,
final HttpStatus httpStatus)
{
final ResponseEntity<ResponseJson> returnValue;
if ((jsonResponseBody != null) &&
(httpStatus != null))
{
returnValue = new ResponseEntity<>(
jsonResponseBody,
httpStatus);
}
return returnValue;
}
注释处理程序方法
@RequestMapping(value = "/webServiceUri", method = RequestMethod.POST)
您还可以使用@PostMethod
批注
@PostMethod("/webServiceUri")
从处理程序方法返回ResponseEntity
调用实用程序方法以构建ResponseEntity
public ResponseEntity<ResponseJson> handlerMethod(
... params)
{
... stuff
return buildResponse(json, httpStatus);
}
注释处理程序参数当您使用@RequestBody
注释时,Jackson将从json转换为参数类型。
public ResponseEntity<ResponseJson> handlerMethod(
final WebRequest webRequest,
@RequestBody final InputJson inputJson)
{
... stuff
}
您可以使用@JsonView
批注。 查看Spring Reference以获得有关此内容的详细信息。 浏览到参考页面并搜索@JsonView。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.