• restful是个好的范式吗?


    有些公司规定web api全用post,引发了口水战。一些restful的拥趸们嗤之以鼻。我倒觉得没啥不好。图片、样式、脚本等静态资源肯定是get,cdn也主管这玩意。api网关跟是不是get有啥关系呢?

    有些吊毛学restful,就学了个名词吧。有些开放api宣称restful风格的,实际上是个卵蛋,四不像。

    了解了restful,可能还了解了幂等。以为get put delete 这几个action按照其自然语言的语义实现操作就幂等了吧!post的自然语义是“发出、推出、展示出来”,没有具体对资源进行操作的语义,所以就不幂等。

    幂等不幂等跟post有啥关系,就是个约定。中间只要没夹杂其他修改资源的操作,幂等的请求第一次完成后的资源状态跟第n次完成后的资源状态一样。restful规定get put delete需要实现为幂定的,要想实现这几个action按照其自然语言的语义幂等,必须要求资源由url唯一确定。也就资源id在url中,不能在querystring里,querystring中只能有sessionid userid token timestep device等环境参数。环境参数一般用来处理权限,环境参数变了要处理的业务数据必须还是原来的。

    url表示资源,只要没有其他操作修改资源,第一次get返回的跟第n次返回一样;第n次put一份相同的资源之后跟第一次一样,这个url下只有一份相同资源;delete个n次跟第一次以后一样,这个url下的资源没了。

    如果要严格按照restful来,数据表里一行一个url,大家对照看看有多少正经restful风格。get put delete幂等了,post咋搞?还用url表示资源,在post参数中用不同字段表示不同业务操作吗?这样一来一个url不跟api网关差不多了吗?成了个dispcher。

    软件工程领域没太多高深研究课题,整出一个范式,不得大肆宣传一下!restful的意思是Representational State Transfer,啥意思呢?就是表示层或者表现层状态转换。

    啥是表示层呢?就是到了用户界面那一层了啊!到了http那一层了,就到了给用户呈现结果的阶段了,可不就是表示层嘛!

    状态转换是啥?业务数据(资源)的状态转换。

    综合起来意思就是,就是要把业务处理中状态转换的信息给界面层透明一下。我尼妈!这不是破坏分层架构吗?!此时言比曰MVC的架构师们,还能蛋定么?

    正常的高效率得搞法是,url能够表示一类资源及这一类资源的业务操作,action有闲心区分就区分,没闲心统一post。这样一来从自动生成的文档中看url就明白个七七八八了,其他狗屁不通的解释都不用看。也就是url就是个方法名。

  • 相关阅读:
    网络多线程 ---实现网络负载图片
    optimizer for eclipse--Eclipse优化,让你的Eclipse快来飞!
    ORACLE AUTOMATIC STORAGE MANAGEMENT翻译-第二章 ASM instance(1)
    IOS 开展 分别制定了iphone 和 ipad 好? 或开发一个 Universal好?
    DevExpress VCL 2014.1.2 for C++BUILDER XE6
    swift http请求返回json数据和分析
    Spark里面的任务调度:离SparkContext开始
    ftk学习记录(一个进度条文章)
    Appium Android Bootstrap控制源代码的分析AndroidElement
    别忽视了业绩比较基准
  • 原文地址:https://www.cnblogs.com/tgis/p/16385022.html
Copyright © 2020-2023  润新知