今天我看到了下面的代码片段,它使用 Java 中的 lambda、可选和函数来呈现特定的端点响应。这个函数、lambda 和那个可选函数的使用在这里真的需要和合理吗?有什么好处?
@RequestMapping(value = "/api/v1/User", produces = "application/json;charset=UTF-8", method = RequestMethod.GET)
public String getBySomeAttribute(@RequestParam(value = "someAttribute", required = true) String someAttribute,
HttpServletResponse response) {
User user = service.getBySomeAttribute(someAttribute);
return createResponse(user, response);
}
private String createResponse(User user, HttpServletResponse response) {
String responseBody = maybe((User u) -> {
response.setStatus(SC_OK);
return toJsonString(userJsonMapper.jsonMapFrom(u));
}).apply(user).orElse("");
setResponseHeaders(response, responseBody.length());
return responseBody;
}
private Function<User, Optional<String>> maybe(Function<User, String> f) {
return (u) -> {
String s = null;
if (u != null && u.getEnabled()) {
s = f.apply(u);
}
return s != null ? of(s) : Optional.empty();
};
}
private void setResponseHeaders(HttpServletResponse response, int responseBodySize) {
response.setHeader("Content-Length", valueOf(responseBodySize));
response.setHeader("Expires", "1");
response.setHeader("Cache-Control", "no-cache");
}
鸿蒙传说
相关分类