Rest 如何在HTTP GET请求中指定参数

Rest 如何在HTTP GET请求中指定参数,rest,http,get,http-headers,httprequest,Rest,Http,Get,Http Headers,Httprequest,我正在开发一个REST API,我想发出一个GET请求,以JSON格式检索“username”指定的用户,如: 路径是/users,就像:http://localhost:8080/users 我的问题是,如何进行指定用户名的GET请求调用 是这样的:http://localhost:8080/users/?username=testusername 这是我的Java方法。我使用的是弹簧休息: /* Get user by username */ @RequestMapping(meth

我正在开发一个REST API,我想发出一个GET请求,以JSON格式检索“username”指定的用户,如:

路径是/users,就像:
http://localhost:8080/users

我的问题是,如何进行指定用户名的GET请求调用

是这样的:
http://localhost:8080/users/?username=testusername

这是我的Java方法。我使用的是弹簧休息:

/* Get user by username */
    @RequestMapping(method=RequestMethod.GET, value="{username}")
    public User getUserByUsername(@PathVariable String username) {
        return repo.findByUsername(username);
    }
这是你的正确格式

如果有多个参数,则写入


您有两个选择。如果客户端知道用户名,则可以支持新端点

GET /users/{username}
如果客户端需要按用户名搜索可用的用户集,则有一种方法:

GET /users
GET /users?username={username}

@RequestMapping(method=RequestMethod.GET)
public User getUserByUsername(@PathVariable String username) {
    if (username == null) {
        return repo.findAllUsers();
    }
    return repo.findByUsername(username);
}
调用返回所有用户。它将使用默认的GET方法返回所有用户。我的java方法不正确吗?请注意,在应用程序的任何层的任何位置都有密码:“testusername”,这意味着确实有问题。你不应该在任何地方有一个清晰的密码,永远不要。
GET /users
GET /users?username={username}

@RequestMapping(method=RequestMethod.GET)
public User getUserByUsername(@PathVariable String username) {
    if (username == null) {
        return repo.findAllUsers();
    }
    return repo.findByUsername(username);
}