我对编写 Servlet 和 REST 服务还很陌生,但现在我遇到了一个问题,我不确定我是否做得正确。我的服务如下所示:
@POST
@Produces ("application/json")
@Path ("/register")
public String register(
@FormParam("name") String name,
@FormParam("username") String username,
@FormParam("password") String password,
@Context HttpServletResponse servletResponse) throws IOException {
if( this.user_taken(username) ) return "USERNAME_TAKEN";
User user = new User(name,username,password);
.....
return mapper.writeValueAsString(user);
}
因此,正如您所看到的,Service
负责后端(数据库和创建用户),Servlet
另一方面负责从表单获取请求,正确验证并将其传递给Service
. 小服务程序代码:
... validate user input form ...
ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
WebResource service = client.resource("http://localhost/Jaba");
String map = mapper.writeValueAsString(request.getParameterMap());
MultivaluedMap<String, String> obj = mapper.readValue(map, MultivaluedMap.class);
String result =
service.path("api").path("register")
.accept("application/json")
.post(String.class, obj);
如您所见,客户端(Servlet)必须做很多令人讨厌的工作,才能将数据传递给服务。如何更改/改进/优化或更好地重构?我正在尝试遵循最佳实践以及在现实生活中的例子。