有人提了一个问题-一定要RESTful吗 (有人提了一个问题,迷茫的东西尽头是什么)

教程大全 2025-07-21 00:45:33 浏览

写在前面的话

这个问题看起来就显得有些萌,或者说类似的问题都有些不靠谱,世上哪有那么多一定的事情,做开发都不一定做多久呢,所以说如果你有这个疑问的话是真真有点儿不着调,不过可能也就是随口一问吧,没有深究的必要。既然有人问这个,那么就再用一篇文章谈谈RESTful吧,既然谈,就不能只是谈其优点,也不能一味的吹捧,也讲一下自己的一些理解和不足的地方。

规范、易读、简洁?

Spring+SpringMVC+MyBatis+easyUI整合进阶篇(一)设计一套好的RESTful API

Spring+SpringMVC+MyBatis+easyUI整合进阶篇(二)RESTful API实战笔记(接口设计及Java后端实现)

Spring+SpringMVC+MyBatis+easyUI整合进阶篇(三)使用AJAX方法实现form表单的提交

Spring+SpringMVC+MyBatis+easyUI整合进阶篇(四)RESTful API实战笔记(前端代码修改)

前文中已经谈了RESTful不少的优点,也做了代码更新,首先,REST强调HTTP应当以资源为中心,并且规范了资源URI的风格;规范了HTTP请求动作(PUT,POST等)的使用,具有对应的语义;遵循REST规范的Web应用将会获得下面好处:URL具有很强可读性的,具有自描述性;资源描述与视图的松耦合;可提供OpenAPI,便于第三方系统集成,提高互操作性;如果提供无状态的服务接口,可提高应用的水平扩展性;

总结下来:规范、易读,但是这两个优点也带来一些不尽如人意的”反效果”:

RESTful中的模棱两可

前一个段落可能有些过于概念化了,还是举一些具体的例子吧。

案例一

其实,RESTful中也存在着许多的模棱两可,也有很多不是那么让开发人员舒服的地方,有人会去纠结查询、增加、修改、删除(对应的方法就是get、post、put、delete),个人认为这并不完全正确,因为这个想法把开发工作中的业务场景过于简单化和模板化了,我们开发的功能就只实现这四类操作吗、如果遇到一些不能完全对应上这四种方式的业务该怎么办呢?

类似的问题还有很多,感觉很多朋友会遇到类似的问题,心里面也有一些不确定该如何去做,其实在理解了REST后,这些并不是什么无解的难题,只是思维方式要转换一下: login和logout其实只是对session资源或者cookie资源的创建和删除;业务的uri如何选择HTTP动词也要灵活变通,规范是死的,人是活的,按照自己的理解去做,如果后期发现错误即使纠正就好了。不过,虽然API如何编写是开发者的自由,但如果一个API在url里放一堆动词、资源设计混乱、各种乱用HTTP Method和status Code,就太不像话了,规范嘛还是要遵守的,说了这么多理解上的偏差,其实代码质量才是最重要的,有些手段其实只是让代码看起来比较优雅的手段而已。

案例二

以上是针对于RESTful理解和设计上的一个例子,具体工作中还有其他的例子吗?也是很多的,比如,比较棘手的一个问题:跨域资源共享 CORS。

在实际进行跨域请求时,经常会遇到类似No ‘Access-Control-Allow-Origin’ header is present on the Requested resource.这样的报错:

这个问题并不是因为RESTful引起的,也不能通过修改RESTful的规范去解决,举这个例子的原因是因为在接口的RESRful化时也遇到过这个问题,解决办法就不在本文中列举了,有兴趣的朋友可以看一下跨域资源共享 CORS 详解这篇文章,以后有时间会把解决方案整理出来的。

一些需要重视的安全性问题

当然,不止是以上的两个问题,前一个段落主要是讲述了一下理解和具体使用上的问题,这一段讲一下可能引发的安全性问题。

迷茫的东西尽头是什么 遗漏了对资源从属关系的检查

一个典型的RESTful的URL会用资源名加上资源的id编号来标识其唯一性,就像这样:/users/{userid},例如:/users/100

一般而言用户只能查看自己的用户信息,而不允许查看其它用户的信息。在这种情况下,攻击者很可能会尝试把这个URL里面的USER ID从100修改为其他数值,以期望应用返回指定用户的信息。不过由于这个安全风险太显而易见,绝大多数应用都会对当前请求者的身份进行校验,看其是否是编号为100的用户,校验成功才返回URL中指定的用户信息,否则会拒绝当前请求。

不经意间泄露的业务信息

以查看用户信息的RESTful URL为例:/users/100。由于用户ID是一个按序递增的数字,因此攻击者既可以通过ID知道目前应用中的用户规模,也可以分别在月初和月末的时候注册一个用户,并对比两个用户的ID即可知道当前这个月有多少新增用户。同理,如果订单号也是按序自增的数字,攻击者可以了解到一定时间范围内的订单量。

这类ID并不会给应用造成任何技术上的威胁,只是通过ID泄露出来的信息对于你的业务而言可能非常敏感。解决办法是不使用按序递增的数字作为ID,而是使用具有随机性、唯一性、不可预测性的值作为ID,最常见的做法就是使用UUID。

参考RESTful架构风格下的4大常见安全问题

选择适合自己的方式

Spring+SpringMVC+MyBatis+easyUI整合进阶篇(五)记录一下从懵懂到理解RESTful的过程前一篇博客中也提到了很多其他的方式,比如传统的MVC开放形式,比如webservice,比如rpc调用,RESTful也只是其中的一种而已,这些选项中并没有高下之分,无非是多种约定俗成的标准,传统MVC开发着舒服就按MVC模式来开发,习惯用RPC就用RPC,能理解和接受REST就用REST。

前几篇文章中描述了RESTful那么多的优点,现在又说大可不必使用,前文又提到RESTful是好的设计实践,现在又是另外一种说法,不是自相矛盾吗?

这是我的文章,我肯定要按照我的一些想法写啊,可能有不对的地方,前文中提到的是好的设计实践也是我的个人想法和理解,这篇的开头就说了,不能只谈优点,所以又列举了一些不足吧,我写文章不是挑口水,很没必要,选择适合自己的技术和规范就好。

套用网络上比较流行的一句话:听了很多道理却依然过不好一生。

作为一名开发人员,自己动手去实践才是硬道理,别人说什么都不要全盘接受,你要想想适不适合你,适不适合你目前做的项目,鞋合不合适只有脚知道,just do it!

结语

优点也好,缺点也罢,虽然看似也总结了不少,但都是个人见解,肯定还有一些遗漏的地方没有讲清楚,还请见谅。

回答文章一开始的问题,是不是一定要用呢?是不是一定要遵循其规则呢?如果不能解决你所面对的问题,不能提高和提升代码质量、提升工作效率,其实大可不必如此介怀,不用就是了。

首发于我的个人博客,编辑于2017年10月13日晚11:37分。


怎样点光QQ问问图标

☆负分是不能点亮图标的,首先要先确认你的问问不是负分。 ★点亮方法一:用户通过自己的QQ号码登陆问问,并在问问上进行提问,提交的内容需经过审核人员审核通过后,就可以点亮问问图标了;如果提问内容不符合问问原则而未通过审核,图标将无法点亮,并会扣除一定的积分和经验值。 ★点亮方法二:登陆QQ,点一下【灰色问问图标】之后,(或者直接登陆问问网站!)会进入问问`个人资料,在用户问问个人中心—》擅长领域—》修改—》常规选项下选择“打开”,然后按“确定”!你的问问图标即可亮了! 这种方法直接可以点亮问问图标,不用任何提问!注意:1.如果你想熄灭的话,在用户问问个人中心—》擅长领域—》修改—》常规选项下选择“关闭”,然后按“确定”!你的问问图标会自动熄灭了!2.如果你以前自己关闭过问问图标,那么选项里可能没有“打开”项,那么你需要再次提一个问题(一定不要匿名),再去常规选项下就可以看见打开了,OK!★问问分级的图表:1-4级问问1级 5-10级问问2级 11-14问问3级 15-20问问4级问问新手(1-4级) 问问能手(5-10级) 问问高手(11-14级) 问问精英(15-20级)答案补充用户问问个人中心—》擅长领域—》修改—》常规选项下选择“打开”

如果有人问包子还是油条 那有人回答了句汉堡吧 这样的回答可以吗?

不可以,因为这是个选择问句,提问题的人是让回答者二选一,或者二选零。 如果回答成“汉堡吧”,前面应该加上“两者都不要”。

面试需要什么技巧?

1、应试者的基本礼仪(1) 提前5-10分钟到达面试地点,以表示求职者的诚意,给对方以信任感,同时也可调整自己的心态,作一些简单的仪表准备,以免仓促上阵,手忙脚乱。 为了做到这一点,一定要牢记面试的时间地点,有条件的同学最好能提前去一趟。 这样,一来可以观察熟悉环境,二来便于掌握路途往返时间,以免因一时找不到地方或途中延误而迟到。 如果迟到了,肯定会给招聘者留下不好的印象,甚至会丧失面试的机会。 (2) 进入面试场合时不要紧张。 如门关着,应先敲门,得到允许后再进去。 开关门动作要轻,以从容、自然为好。 见面时要向招聘者主动打招呼问好致意,称呼应当得体。 在主试人没有请你坐下时,切勿急于落座。 主试人请你坐下时,应道?quot;谢谢\\\。 坐下后保持良好的体态,切忌大大咧咧,左顾右盼,满不在乎,以免引起反感。 离去时应询问\\\还有什么要问的吗\\\?得到允许后应微笑起立,道谢并说\\\再见\\\。 (3) 对主试人的问题要逐一回答。 对方给你介绍情况时,要认真聆听。 为了表示你已听懂并感兴趣,可以在适当的时候点头或适当提问、答话。 回答主试者的问题,口齿要清晰,声音要适度,答话要简练、完整。 一般情况下不要打断主试人的问话或抢问抢答,否则会给人急躁、鲁莽、不礼貌的印象。 问话完毕,听不懂时可要求重复。 当不能回答某一问题时,应如实告诉主试人,含糊其辞和胡吹乱侃会导致面试失败。 对重复的问题也要有耐心,不要表现出不耐烦。 (4) 在整个面试过程中,在保持举止文雅大方,谈吐谦虚谨慎,态度积极热情。 如果主试人有两位以上时,回答谁的问题,你的目光就应注视谁,并应适时地环顾其他主试人以表示你对他们的尊重。 谈话时,眼睛要适时地注意对方,不要东张西望,显得漫不经心,也不要眼皮低望,显得缺乏自信,激动地与主试人争辩某个问题也是不明智的举动,冷静地保持不卑不亢的风度是有益的。 有的主试人专门提一些无理的问题试探你的反应,如果?quot;一触即发\\\,乱了分寸,面试的效果显然不会理想。 2、应试者语言运用的技巧面试场上你的语言表达艺术标志着你的成熟程度和综合素养。 对求职应试者来说,掌握语言表达的技巧无疑是重要的。 那么,面试中怎样恰当地运用谈话的技巧呢?(1) 口齿清晰,语言流利,文雅大方。 交谈时要注意发音准确,吐字清晰。 还要注意控制说话的速度,以免磕磕绊绊,影响语言的流畅。 为了增添语言的魅力,应注意修辞美妙,忌用口头禅,更不能有不文明的语言。 (2) 语气平和,语调恰当,音量适中。 面试时要注意语言、语调、语气的正确运用。 语气是指说话 的口气;语调则是指语音的高低轻重配置。 打招呼问侯时宜用上语调,加重语气并带拖音,以引起对方的注意。 自我介绍时,最好多用平缓的陈述语气,不宜使用感叹语气或祈使句。 声音过大令人厌烦,声音过小则难以听清。 音量的大小要根据面试现场情况而定。 两人面谈且距离较近时声音不宜过大,群体面试而且场地开阔时声音不宜过小,以每个主试人都能听清你的讲话为原则。 (3) 语言要含蓄、机智、幽默。 说话时除了表达清晰以外,适当的时候可以插进幽默的语言,使谈话增加轻松愉快的气氛,也会展示自己的优越气质和从容风度。 尤其是当遇到难以回答的问题时,机智幽默地语言会显示自己的聪明智慧,有助于化险为夷,并给人以良好的印象。 (4) 注意听者的反应。 求职面试不同于演讲,而是更接近于一般的交谈。 交谈中,应随时注意听者的反应。 比如,听者心不在焉,可能表示他对自己这段话没有兴趣,你得设法转移话题;侧耳倾听,可能说明由于自己音量过小使对方难于听清;皱眉、摆头可能表示自己言语有不当之处。 根据对方的这些反应,就要适时地调整自己的语言、语调、语气、音量、修辞,包括陈述内容。 这样才能取得良好的面试效果。 3、应试者手势运用的技巧其实,在日常生活交际中,人们都在自觉不自觉地运用手势帮助自己表达意愿。 那么,在面试中怎样正确地运用手势呢?(1) 表示关注的手势。 在与他人交谈中,一定要对对方的谈话表示关注,要表示出你在聚精会神地听。 对方在感到自己的谈话被人关注和理解后,才能愉快专心地听取你的谈话,并对你产生好感。 面试时尤其如此。 一般表示关注的手势是:双手交合放在嘴前,或把手指搁在耳下;或把双手交叉,身体前倾。 (2) 表示开放的手势。 这种手势表示你愿意与听者接近并建立联系。 它使人感到你的热情与自信,并让人觉得你对所谈问题已是胸有成竹。 这种手势的做法是手心向上,两手向前伸出,手要与腹部等高。 (3) 表示有把握的手势。 如果你想表现出对所述主题的把握,可先将一只手伸向前,掌心向下,然后从左向右做一个大的环绕动作,就好像用手\\\覆盖\\\着所要表达的主题。 (4) 表示强调的手势。 如果想吸引听者的注意力或强调很重要的一点,可把食指和大拇指捏在一起,以示强调。 以上介绍的是面试中常见的手势,但要达到预期的目的,还应注意因时、因地、因人灵活运用。 4、应试者回答问题的技巧(1) 把握重点,简捷明了,条理清楚,有理有据。 一般情况下回答问题要结论在先,议论在后,先将自己的中心意思表达清晰,然后再做叙述和论证。 否则,长篇大论,会让人不得要领。 面试时间有限,神经有些紧张,多余的话太多,容易走题,反倒会将主题冲淡或漏掉。 (2) 讲清原委,避免抽象。 主试人提问总是想了解一些应试者的具体情况,切不可简单地仅以\\\是\\\、\\\否\\\作答。 针对所提问题的不同,有的需要解释原因,有的需要说明程度。 不讲原委,过于抽象的回答,往往不会给主试者留下具体的印象。 (3) 确认提问内容,切忌答非所问。 面试中,如果对主试人提出的问题,一时摸不到边际,以致不知从何答起或难以理解对方问题的含义时,可将问题复述一遍,并先谈自己对这一问题的理解,请教对方以确认内容。 对不太明确的问题,一定要搞清楚,这样才会有的放矢,不致答非所问。 (4) 有个人见解,有个人特色。 主试人接待应试者若干名,相同的问题问若干遍,类似的回答也要听若干遍。 因此,主试人会有乏味、枯燥之感。 只有具有独到的个人见解和个人特色的回答,才会引起对方的兴趣和注意。 (5) 知之为知之,不知为不知。 面试遇到自己不知、不懂、不会的问题时,回避闪烁,默不作声,牵强附会,不懂装懂的做法均不足取,诚恳坦率地承认自己的不足之处,反倒会赢得主试者的信任和好感。 5、消除过度紧张的技巧由于面试成功与否关系到求职者的前途,所以大学生面试时往往容易产生紧张情绪。 有些大学生可能由于过度紧张导致面试失败。 因此必须设法消除过度的紧张情绪。 这里介绍几种消除过度紧张的技巧,供同学们参考。 (1) 面试前可翻阅一本轻松活泼、有趣的杂志书籍。 这时阅读书刊可以转移注意力,调整情绪,克服面试时的怯场心理。 避免等待时紧张、焦虑情绪的产生。 (2) 面试过程中注意控制谈话节奏。 进入试场致礼落座后,若感到紧张先不要急于讲话,而应集中精力听完提问,再从容 应答。 一般来说人们精神紧张的时候讲话速度会不自觉地加快,讲话速度过快既不利于对方听清讲话内容,又会给人一种慌张的感觉。 讲话速度过快往往容易出错,甚至张口结舌,进而强化自己的紧张情绪 ,导致思维混乱。 当然,讲话速度过慢,缺乏激情,气氛沉闷,也会使人生厌。 为了避免这一点,一般开始谈话时可以有意识地放慢讲话速度,等自己进入状态后再适当增加语气和语速。 这样,既可以稳定自己的紧张情绪,又可以扭转面试的沉闷气氛。 (3) 回答问题时目光可以对准提问者的额头。 有的人在回答问题时眼睛不知道往哪儿看。 经验证明,魂不守舍,目光不定的人,使人感到不诚实;眼睛下垂的人,给人一种缺乏自信的印象;两眼直盯着提问者,会被误解为向他挑战,给人以桀骜不驯的感觉。 如果面试时把目光集中在对方的额头上,既可以给对方以诚恳、自信的印象,也可以鼓起自己的勇气,消除自己的紧张情绪。 最后,还应正确对待面试中的失误。 面试交谈中难免因紧张而出现失误。 此时,切不可因一时的失误而丧气。 要记住,一时失误不等于面试失败,重要的是要战胜自己,不要轻易地放弃机会。 即使一次面试没有成功,也要分析原

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐