关于restful接口命名问题

发布于 2022-09-11 21:11:45 字数 278 浏览 56 评论 0

如果请求同一个资源,但是参数不同的怎么办?

clipboard.png

clipboard.png

像上面这两种情况的话,请求同一个列表,只是传参不一样 。如果path写一样的会报错,按照规范,这个path应该怎么命名呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

请别遗忘我 2022-09-18 21:11:45

基本的CRUD可按照resultFul来命名。其他功能可自定义,不用满足resultFul规范

離人涙 2022-09-18 21:11:45

/info/list?classType=?
/info/list?courseId=?

这种都是写一起的吧

第一种

@RequestMapping(path = "/info/list/{classType}/{courseId}", method = RequestMethod.GET)
public Info getInfoList(@PathVariable String classType, @PathVariable String courseId) {
    // code here
}

第二种

@RequestMapping(path = "/info/list", method = RequestMethod.GET)
public Info getInfoList(@RequestParam String classType, @RequestParam String courseId) {
    // code here
}

还有一种通用的方式,参照下面

比如你想设计的restful api是这样的,

http://localhost:2000/custom?brand=dell&limit=20&price=20000&sort=asc

那么想获得查询参数,可以采用map来获取,

    @RequestMapping(method = RequestMethod.GET, value = "/custom")
    public String controllerMethod(@RequestParam Map<String, String> customQuery) {

        System.out.println("customQuery = brand " + customQuery.containsKey("brand"));
        System.out.println("customQuery = limit " + customQuery.containsKey("limit"));
        System.out.println("customQuery = price " + customQuery.containsKey("price"));
        System.out.println("customQuery = other " + customQuery.containsKey("other"));
        System.out.println("customQuery = sort " + customQuery.containsKey("sort"));

        return customQuery.toString();
    }

希望能帮到你。

说不完的你爱 2022-09-18 21:11:45

两种方法有冲突吗?

  • 有的话,可以list-by-typelist-by-id之类的
  • 没有的话,同一个接口接然后判断参数
┈┾☆殇 2022-09-18 21:11:45

加个type 字段来去分

然后我想吐槽一下。你这个接口命名根本不是符合rest规范

你要查列表。正常不是get 然后+参数吗。加个list 是干嘛用的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文