自定义HTTP状态码

4
我将使用fluent-http来进行项目开发。
我从一个简单的“登录/密码”页面开始。我创建了一个简单的POJO,其中包含loginpassword字段:
public class LoginRequest() {
  private String login;
  private String password;
  //...
}

我把它通过一个Resource发送给流畅的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";
  }
}

虽然返回的字符串是正确的,但状态码似乎没有被使用。在这两种情况下,响应都有一个HTTP 200代码。

注意:我发现一些状态码是预先实现的:

  • 如果出现异常,将返回代码500。
  • 如果资源未找到,则返回代码400。

有什么想法吗?

1个回答

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);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接