V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Ouyangan
V2EX  ›  Java

restful 接口是如何设计的

  •  
  •   Ouyangan · 2015-06-03 11:52:13 +08:00 · 5443 次点击
    这是一个创建于 3488 天前的主题,其中的信息可能已经有所发展或是发生改变。

    刚上班没多久,经理让我写restful风格的接口文档,希望有朋友给一些建议.

    20 条回复    2015-07-01 12:32:47 +08:00
    babyname
        1
    babyname  
       2015-06-03 11:53:15 +08:00
    先了解设计原则、规范,然后根据需求写吧。
    learnshare
        2
    learnshare  
       2015-06-03 11:58:05 +08:00
    面向资源
    blue7wings
        3
    blue7wings  
       2015-06-03 12:11:22 +08:00 via iPhone   ❤️ 1
    http://www.ruanyifeng.com/blog/2011/09/restful.html
    阮一峰的这篇页面就写得挺好,可以参考下~~
    Septembers
        5
    Septembers  
       2015-06-03 12:23:10 +08:00 via Android
    设计文档之前先摸清楚业务
    Ouyangan
        6
    Ouyangan  
    OP
       2015-06-03 12:42:02 +08:00
    我的情况是:之前是自学的java,时间大概有六个月,接口文档没有写过,所以感觉到有一些无从下手,谢谢楼上的朋友的建议.
    invite
        7
    invite  
       2015-06-03 13:01:05 +08:00
    需求,需求。
    gevin
        8
    gevin  
       2015-06-03 13:03:58 +08:00   ❤️ 2
    我以前想在博客里写一下REST API设计原则的,看到下面这篇就懒得自己折腾了
    https://bourgeois.me/rest/
    colincat
        9
    colincat  
       2015-06-03 13:07:21 +08:00   ❤️ 1
    @Ouyangan springMVC 内置RESTful
    请参考 https://spring.io/guides/gs/rest-service/
    johnnyb
        10
    johnnyb  
       2015-06-03 14:28:26 +08:00
    举个例子:

    ```
    http://~/users 用户列表
    http://~/users/{id} 用户详情/编辑
    http://~/users/new 新用户(news视为{id}的特殊形式)
    http://~/users/{id}/roles 用户权限列表(二级资源,可以继续套用RESTfull)
    ```

    url 中不应该出现动词,对于同一个 url 例如 http://~/users/{id},通过 method (get/post/patch/put) 来区分是读/写操作
    zonghua
        11
    zonghua  
       2015-06-03 15:06:45 +08:00 via iPhone
    @johnnyb 受教了,springMVC直接提供了通过目录获取参数,不知道struts2如何实现?
    anyforever
        12
    anyforever  
       2015-06-03 16:12:45 +08:00
    大家API后端一般都是用什么语言开发的?
    johnnyb
        13
    johnnyb  
       2015-06-03 16:30:25 +08:00
    sing1ee
        14
    sing1ee  
       2015-06-03 16:54:56 +08:00
    面向资源在实践中,只能说看上去很简单,看上去很美。但,现实很残酷,很现实。业务总是会变的越来越复杂,这个过程中,面向资源的接口会越来越混乱,逻辑不清晰,交叉比较厉害。所以,聊一聊就可以了,不用太认真。
    我们使用的SpringBoot
    nullcc
        15
    nullcc  
       2015-06-03 17:04:41 +08:00
    阮一峰有一篇博文《RESTful API 设计指南》写得比较浅显易懂: http://www.ruanyifeng.com/blog/2014/05/restful_api.html
    Feiox
        16
    Feiox  
       2015-06-03 17:11:55 +08:00
    如果写 RESTful 文档,可以尝试一下 REST 建模语言: http://raml.org/
    minotaur
        17
    minotaur  
       2015-06-04 09:33:16 +08:00
    不要出现动词,使用get post put delete,浏览器兼容是个问题
    qianlifeng
        18
    qianlifeng  
       2015-06-30 14:53:28 +08:00
    @johnnyb
    ```
    http://~/users 用户列表
    http://~/users/{id} 用户详情/编辑
    http://~/users/new 新用户(news视为{id}的特殊形式)
    http://~/users/{id}/roles 用户权限列表(二级资源,可以继续套用RESTfull)
    ```

    感觉应该是:
    ```
    http://~/users GET/用户列表 ,POST/新用户,PUT/更新
    ```
    一般不用下面这种形式创建吧?
    ···
    http://~/users/new 新用户(news视为{id}的特殊形式)
    ···
    johnnyb
        19
    johnnyb  
       2015-07-01 12:12:25 +08:00
    @qianlifeng
    你是对的。我这里确实没交代清楚,举的例子应该是描述如何在浏览器地址栏呈现,对应api路径其实只有 http://~/users 一个,然后通过method来判定:POST/新用户,PUT/更新,DELETE/删除。。。
    Ouyangan
        20
    Ouyangan  
    OP
       2015-07-01 12:32:47 +08:00
    @johnnyb @qianlifeng 谢谢大家...
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1114 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:40 · PVG 02:40 · LAX 10:40 · JFK 13:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.