我考虑在项目中使用fluent-http。
我从一个简单的“登录/密码”页面开始。我创建了一个包含字段login
和password
的简单POJO:
public class LoginRequest() {
private String login;
private String password;
//...
}
我通过Resource
发送给fluent-http:
@Prefix("/user")
public class PersonResource {
@Post("/")
public String get(LoginRequest loginRequest) {
//[...]
}
}
它运作良好:)
现在,我想知道是否可以在成功的情况下发送代码为HTTP 200的响应,在发生故障时发送代码HTTP 401。
所以我试着注入Response
:
@Post("/")
public String login(LoginRequest loginRequest, Response response) {
if(loginRequest.getPassword().equals("helloworld")) {
response.setStatus(200);
return "SUCCESS";
} else {
response.setStatus(401);
return "ERROR";
}
}
返回正确的String但似乎没有使用状态代码。在这两种情况下,响应都有代码HTTP 200。
注意:我发现某些状态代码已预先实现:
有什么想法吗?
答案 0 :(得分:1)
如果要更改默认内容类型,状态或标头,该方法应返回net.codestory.http.payload.Payload
。
这是你应该写的:
@Post("/")
public Payload login(LoginRequest loginRequest) {
if(!loginRequest.getPassword().equals("helloworld")) {
return new Payload("ERROR").withCode(HttpStatus.UNAUTHORIZED);
}
return new Payload("SUCCESS").withCode(HttpStatus.CREATED);
}