zoukankan      html  css  js  c++  java
  • RESTFUL 设计风格

    RESTFUL  规范总结:

    Rest是web服务的一种架构风格;使用HTTP,URI,XML,JSON,HTML等广泛流行的标准和协议;轻量级,跨平台,跨语言的架构设计;它是一种设计风格,不是一种标准,是一种思想

    Rest架构的主要原则:

    1)网络上的所有事物都被抽象为资源

    2)每个资源都有一个唯一的资源标识符

    3)同一个资源具有多种表现形式(xml,json等)

    4)对资源的各种操作不会改变资源标识符

      5)所有的操作都是无状态的

      6)符合REST原则的架构方式即可称为RESTful

    URI设计上的一些技巧:

    1)使用_或-来让URI可读性更好,例如国内比较出名的开源中国社区,它上面的新闻地址就采用这种风格, 如http://www.oschina.net/news/38119/oschina-translate-reward-plan。

    2)使用/来表示资源的层级关系例如上述/git/git/commit/e3af72cdafab5993d18fae056f87e1d675913d08就表示了一个多级的资源, 指的是git用户的git项目的某次提交记录,又例如/orders/2012/10可以用来表示2012年10月的订单记录。

    3)使用?用来过滤资源,很多人只是把?简单的当做是参数的传递,很容易造成URI过于复杂、难以理解。可以把?用于对资源的过滤, 例如/git/git/pulls用来表示git项目的所有推入请求,而/pulls?state=closed用来表示git项目中已经关闭的推入请求, 这种URL通常对应的是一些特定条件的查询结果或算法运算结果。

    4),或;可以用来表示同级资源的关系:有时候我们需要表示同级资源的关系时,可以使用,或;来进行分割。例如哪天github可以比较某个文件在随意两次提交记录之间的差异,或许可以使用/git/git /block-sha1/sha1.h/compare/e3af72cdafab5993d18fae056f87e1d675913d08;bd63e61bdf38e872d5215c07b264dcc16e4febca作为URI。 不过,现在github是使用…来做这个事情的,例如/git/git/compare/master…next。

    状态码:

    GET

    安全且幂等

    获取表示

    变更时获取表示(缓存)

    200(OK) - 表示已在响应中发出

    204(无内容) - 资源有空表示

    301(Moved Permanently) - 资源的URI已被更新

    303(See Other) - 其他(如,负载均衡)

    304(not modified)- 资源未更改(缓存)

    400 (bad request)- 指代坏请求(如,参数错误)

    404 (not found)- 资源不存在

    406 (not acceptable)- 服务端不支持所需表示

    500 (internal server error)- 通用错误响应

    503 (Service Unavailable)- 服务端当前无法处理请求

    POST

    不安全且不幂等

    使用服务端管理的(自动产生)的实例号创建资源

    创建子资源

    部分更新资源

    如果没有被修改,则不过更新资源(乐观锁)

    200(OK)- 如果现有资源已被更改

    201(created)- 如果新资源被创建

    202(accepted)- 已接受处理请求但尚未完成(异步处理)

    301(Moved Permanently)- 资源的URI被更新

    303(See Other)- 其他(如,负载均衡)

    400(bad request)- 指代坏请求

    404 (not found)- 资源不存在

    406 (not acceptable)- 服务端不支持所需表示

    409 (conflict)- 通用冲突

    412 (Precondition Failed)- 前置条件失败(如执行条件更新时的冲突)

    415 (unsupported media type)- 接受到的表示不受支持

    500 (internal server error)- 通用错误响应

    503 (Service Unavailable)- 服务当前无法处理请求

    URI不应该使用动作来描述。例如,下面是一些不符合统一接口要求的URI:

    GET /getUser/1

    POST /createUser

    PUT /updateUser/1

    DELETE /deleteUser/1

  • 相关阅读:
    阻止事件冒泡
    移动端开发
    angular6 管道多参数传输 Pipe
    在div上添加小三角
    angular6 使用@Input() @Output()
    angular6 想要获取页面某些事件 如 点击 window宽高等等
    如何将项目添加到git上
    使用vue-cli 搭建element-admin后台
    bootstrap4 常用样式类名 (供自己参考)
    键盘按下 keyCode 的值
  • 原文地址:https://www.cnblogs.com/wangyue0925/p/9088104.html
Copyright © 2011-2022 走看看