首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义HTTP状态码

自定义HTTP状态码
EN

Stack Overflow用户
提问于 2015-06-24 11:52:52
回答 1查看 1.8K关注 0票数 4

我考虑在项目中使用fluent-http

我从一个简单的“登录/密码”页面开始。我用字段loginpassword创建了一个简单的POJO:

代码语言:javascript
复制
public class LoginRequest() {
  private String login;
  private String password;
  //...
}

我把它通过Resource发送到fluent-http:

代码语言:javascript
复制
@Prefix("/user")
public class PersonResource {

  @Post("/")
  public String get(LoginRequest loginRequest) {
    //[...]
  }
}

而且效果很好:)

现在,我想知道在成功的情况下是否可以用代码HTTP 200发送响应,如果失败,是否可以用代码HTTP 401发送响应。

因此,我尝试注入Response

代码语言:javascript
复制
@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。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-24 12:44:22

如果要更改默认内容类型、状态或标题,则该方法应返回net.codestory.http.payload.Payload

下面是你应该写的东西:

代码语言:javascript
复制
@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);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31025807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档