本文目录一览:
王朝从来都不缺乏*,他们星光熠熠,影响着世世代代的篮球追梦人。然而一个王朝的建立仅仅依靠一名*是完全不够的,他们需要左膀右臂,脚踩风火轮,身披混天绫的他们,才足以叱咤风云,王朝的支柱们,他们默默奉献,成为历史的书写者。
对于马刺队的球迷们来说,*的遗憾中必有托尼-帕克这个名字,这个为马刺奉献了几乎整个生涯的男人,在最后却没能终老马刺,成为很多马刺球迷们心中的痛。
但是,有时候遗憾也是一种美,正是因为帕克暮年的离开,才让大家意识到这位平日里默默无闻的后卫是多么的伟大。
马刺虽然没有过三连冠,但却是公认的当之无愧的王朝球队,从1998年开始,到2014年,马刺夺下了5个*,实力在联盟中一直都是第一档,始终是笼罩着联盟的一朵乌云。
托尼-帕克相较于其他两位,是GDP组合中最不起眼的一位,相比于邓肯磐石般的地位和吉诺比利妖刀的风骚,帕克就像是小透明,甚至在拿了FMVP的那个赛季,他依然不太显眼,但对于马刺队来说,托尼-帕克是当之无愧的王朝支柱。
低调但实用,这个标签一直伴随着帕克,从踏上赛场直到退役。
帕克的原名其实不是托尼-帕克,而是安东尼-帕克,而他原本对篮球也没兴趣,而是对足球有兴趣——在当时的法国,甚至整个欧洲,足球氛围都是极其炸裂的,而帕克从2岁开始就开始踢足球了,依靠先天的协调性和速度,他在场上担任前锋,精通盘带,旋转,大力抽射等技能,他的偶像是普拉蒂尼,他的房间里贴着一张普拉蒂尼进球的精彩照片。
他发誓,以后也要像他一样成为足球运动员。如果不出意外的话,帕克应该会成为一名*的足球运动员,甚至可能依靠运动天赋踢上国家队,但在9岁那一年,帕克跟随着父亲到了芝加哥,这是他父亲求学的地方。
帕克去看了一个比赛,这改变了他的一生。
那场比赛是芝加哥公牛队对阵洛杉矶湖人队,迈克尔-乔丹无所不能,摧毁了整支湖人队,也拿到了他职业中第一座奥布莱恩杯,帕克被彻底征服了,赛后他和乔丹合了影,从此之后便爱上了篮球。
这一年,是1991年。
帕克的父亲原本就是一名篮球职业球员,很乐意于看到帕克这样的改变,并开始悉心教导帕克,在他的帮助之下,小帕克进步迅速。
在篮球这项运动上,帕克并没有身体优势,但他脑子好,能迅速吃透战术,最为关键的是,他的速度很快,别人才冲到半场,他已经跑到了底线,完成了上篮,就像一阵风一样,他逐渐在欧洲圈里小有名气。
在他16岁那一年,帕克已经在业余联赛INSEP的一级联赛中大放异彩了,一级联赛的得分榜和抢断板都被他包圆了,帕克也从业余联赛跳跃到了职业联赛,他去了巴黎,先当替补再做网友分享,和他打过比赛得分都清楚,这个小伙子身体并不强壮,用身体防下他很容易,但想要追上去防他真是太难了。
1997年,托尼-帕克入选了法国国家青年队,2年后,这个18岁的少年带领法国青年队带成了欧洲*,还拿到了MVP。
而托尼-帕克,距离NBA也越来越近了。
从2000年开始,越来越多的美国球探涌向欧洲,去考察这位小个子后卫,在美国队和欧洲队的比赛中,帕克如风一般把美国队所有球员甩在身后,取下20分7助4板2断,让所有NBA球探激动不已。
马刺队的主教练波波维奇看上了帕克,在当时,欧洲的后卫在NBA并不吃香,哪怕是帕克这样*的后卫,选秀前景也并不明朗,而马刺队很喜欢发掘国际球员,于是邀请了帕克前来试训。
试训过后,波波维奇留下了托尼帕克,并让他担任了球队的网友分享,这也是继史蒂夫-纳什之后NBA历史上第二位外籍球员网友分享后卫。
于是,伟大的合作拉开了他的序幕。
2001年选秀大会,马刺用首轮第28顺位拿下了帕克,他们应该庆幸欧洲后卫不被看好,在NBA生涯的首个赛季,帕克就入选了NBA*新秀阵容,并入选了年度新秀*阵容第一队,菜鸟赛季,帕克场均拿下9.2分4.3助攻。
2003年,帕克场均统计15.5分5.3助,并且第一次拿到NBA总*,品尝到了登顶NBA*舞台的机会。
季后赛,特别是总决赛的经历让他更加成熟,在2003-2004赛季,帕克在常规赛场均拿下14.7分5.5助攻。 在季后赛,帕克开始升级,季后赛首轮,面对孟菲斯灰熊队,帕克场均拿到21分,在第二轮对阵洛杉矶湖人队中,帕克的前32次出手,命中了21球,效率非常高。
2004-2005赛季,帕克场均能拿到16.6分6.1助攻,并且随队拿到了个人的第二个总*戒指。随后的几个赛季,帕克对于球的掌控愈发得心应手,场均数据也在逐年上涨,虽然涨幅不大,但对于马刺来说,他们越来越能信赖这个法国籍后卫。
时间来到2007年,马刺队再次登顶,以4:0的总比分横扫稚嫩的詹姆斯带领的克利夫兰骑士队,再度登上NBA*宝座。在总决赛4场比赛中,帕克有3场都拿下了马刺全队*分,依靠这种出色的表现,帕克成为了首位获得NBA总决赛MVP(FMVP)的非美国球员。
自此,法国跑车之名扬四海。
在所有人的印象中,帕克都不是一个砍分狂人,但是在2008-2009赛季,帕克在对阵明尼苏达森林狼队的比赛中拿下职业生涯新高的55分,向全世界证明他如果想拿高分也是做得到的,这个赛季,帕克入选了全明星,常规赛场均拿下22分6.9助攻,在季后赛中也游刃有余,场均能拿下28.6分+4.2篮板,更有半场31分的惊人表现。
随着时间推移,帕克变得越来越成熟了。
在常规赛,因为马刺队的团队打法,帕克的数据略有下降,但他还是在单场屡屡献上精彩表现,2012年,帕克在对阵火箭队时拿下三双,2013年,在和灰熊的比赛中,经过一个加时的战斗,帕克拿到了18个助攻,而随后他更是以一场单场37分的表演淘汰了灰熊,帮助马刺挺进了总决赛。
2012-13赛季,帕克入选*阵容二队。
2013-14赛季,帕克再次入选*阵容二队,并且在季后赛中帮助马刺队斩获奥布莱恩杯,复仇热火。这个赛季的马刺,是NBA历史上*的一支团队,而帕克在里面扮演了发动机的位置,正是由于他的存在,马刺才能把进攻梳理的如此丝滑。
随后,因为身体原因,加上马刺开始传承权柄,帕克开始退居二线,场均数据逐年下降,但在一些关键战役中,帕克依然能够完成高效表现,帮助马刺尽上自己的最后一分力。
原本帕克在马刺的退役是水到渠成的,但是因为和队内新核心莱昂纳德的矛盾,帕克在2018年以2年1000万的价格加盟了夏洛特黄蜂,在度过了场均9.5分3.7的一个黄蜂赛季后,帕克选择了在黄蜂退役,同年,马刺队也退役了帕克的9号球衣。
纵观托尼帕克的整个职业生涯,虽然场均数据并不夸张,但是帕克在场上的影响力是无与伦比的。
波波维奇曾经这么夸过帕克:“他有着乔丹一般的竞争心和好胜心。”他对于胜利的渴望是非常强烈的,在低调幽默的外表伪装下,是一颗火热的好胜心,每一场比赛他都会竭尽全力。
对于马刺队来说,帕克是他们队史上最伟大的后卫,从2001年初进NBA,帕克在首轮第28顺位被马刺选中,直到今天,这位俊朗的法国后卫已经为圣安东尼奥征战了1198场比赛,位列队史第二,得到18943分位列队史第四,送出6829记助攻位列队史第一,投进7564粒罚球位列队史第三。
还有四座总*奖杯,一届总决赛MVP,这些成就,无与伦比。
除了在NBA的成就,在国际赛场上,帕克也是一霸。
2001年至2011年,帕克代表法国队参加了6届男篮欧锦赛,但都与*失之交臂,到了2013年,帕克带领法国队夺得欧锦赛*。
进入淘汰赛以后,“法国跑车”场均贡献23.6分,5场比赛得分超过20分。最终夺下*,帕克也毫无悬念地被评为本届欧锦赛MVP,同时入选*阵容,这也使帕克成为了历史上首位集NBA总*、NBA总决赛MVP、欧锦赛*和欧锦赛MVP之人。
托尼-帕克的篮球生涯,足以用“传奇”两字形容,他是马刺王朝的*支柱,他是FMVP,假以时日,他必定能够入选NBA名人堂!
(小隐于野)
随着2022年卡塔尔足球世界杯分组抽签结果揭晓,已经确定晋级的29支球队以及3个附加赛席位分落8个小组。无论是强队云集的“死亡之组”,还是看似强弱分明的小组,都各具看点。
A组
卡塔尔、厄瓜多尔、塞内加尔、荷兰
相比于东道主卡塔尔、非洲杯*塞内加尔、“无冕*”荷兰,以南美洲第四名身份晋级卡塔尔世界杯的厄瓜多尔显得相对“低调”,不过这支正处在上升期的球队颇具神秘色彩,他们有可能成为本组*的“X因素”。
无缘2018年俄罗斯世界杯的厄瓜多尔早早就开始为卡塔尔世界杯做准备,但重建中的厄瓜多尔队在2019年美洲杯时小组赛仅取得了2负1平的战绩。2020年,阿根廷人阿尔法罗在这种背景下接手球队压力不可谓不小,他与教练团队为重建做足了功课,他们发现厄瓜多尔球员在世界*联赛具有竞争力的球员很有限,于是,一方面在本国联赛和欧洲其他联赛进行海选,同时将目光锁定在年轻人身上。2019年在波兰举行的U20世界杯比赛中,厄瓜多尔获得了第三名的历史*成绩。厄瓜多尔教练团队的这些工作收到了成效,这支球队的平均年龄是南美区预选赛最年轻的,但同时也有一些经验和能力俱佳的老将压阵,最终他们提前一轮获得卡塔尔世界杯资格。
从赛程来看,厄瓜多尔首场比赛对阵卡塔尔,东道主如果想要有所作为,在士气最鼎盛时力拼这场揭幕战极为重要。厄瓜多尔第二轮对阵荷兰,比赛结果很可能对“橙衣军团”淘汰赛赛程产生影响。厄瓜多尔最后一轮对手是塞内加尔,两队实力大体相当,获胜的一方很有可能就是获得出线权的球队。厄瓜多尔每一场比赛都不乏看点,他们的表现或许就是解开本小组悬念的钥匙。
B组
英格兰、伊朗、美国、附加赛球队
(威尔士/苏格兰/乌克兰)
虽然还有一个名额没有揭晓,但可以确定的是这个小组几乎每一场比赛都会充满话题性,甚至超越足球。英格兰队看似抽到了上上签,但历史经验告诉人们,比赛都不止是纸面实力的比拼。
世界杯历史上,英格兰和美国曾携手谱写了一段经典故事。英格兰在1950年*亮相世界杯,作为现代足球的发源地,他们是毋庸置疑的强者,而美国队则是一支由司机、洗碗工和学生等不同职业和身份踢球人组成的球队。然而,那场强弱分明的比赛最终以美国队1比0获胜而告终。在那个通讯还不是很发达的年代,英国媒体“想当然”地认为这是印刷错误,把结果写成了是英格兰10比1获胜。
足球比赛中,“德比大战”通常会十分激烈,这个小组也很有可能上演这样的对决。目前威尔士在等待苏格兰和乌克兰比赛的胜者打附加赛,也就是说有2/3的可能性会最终出现“英国德比”。就是实力而言,英格兰肯定是最强的,但鉴于威尔士、苏格兰和英格兰的特殊关系,彼此之间十分熟悉,变数其实很大。比如2016年欧锦赛小组赛上,威尔士就险些掀翻实力强大的英格兰。
即便是另一个对手伊朗,也绝不是任人宰割的球队。伊朗的世界排名是所有亚洲球队中*的,达到了21位。上届俄罗斯世界杯时,伊朗队面对西班牙和葡萄牙两大强队并不太落下风,还战胜了摩洛哥。本次B组的几支球队除了英格兰队外,其他几支球队的世界排名和实力比较接近。此外,如果出现伊朗队连续3场比赛对阵英语国家球队的情况,比赛看点也会进一步增加。
C组
阿根廷、沙特阿拉伯、墨西哥、波兰
当得知波兰将与阿根廷同组竞技后,波兰足协在社交媒体发文写道:“当你知道你要面对格利克和古拉尔斯基会有很多工作要做……”同时还在下方配了一张梅西掩面的图。格利克和古拉尔斯基是波兰两大中场悍将,此条图文表达的意思很清晰,波兰人将竭力给阿根廷核心梅西制造麻烦。
事实上,这个小组各队实力相对而言层次分明。梅西和莱万多夫斯基两大世界*球星同组,无疑是*话题。目前的五大联赛进球榜上,莱万多夫斯基以15球领跑,而梅西和C罗两人却都未能进入前10。这背后是一个国际足球备受关注的话题:“梅罗时代”已经远去,而终结者或许就是莱万。
梅西在2021年获得了第七座金球奖,当时莱万多夫斯基位列第二,引发不少讨论。不过与此同时,在世界足球先生评选中,莱万多夫斯基胜出,并且在2022年蝉联了这一奖项。如今,两人将在世界杯赛场展开直接对话。
梅西和莱万多夫斯基分别为各自国家队打进81球和75球,两人在俱乐部层面有过3次碰面,各自取得两粒进球。本次世界杯是他们*在国家队比赛中碰面,也很有可能是1987年出生的梅西和1988年出生的莱万多夫斯基最后一次在这种大赛场合正面对决。
总体而言,本小组出线格局悬念相对较小,阿根廷实力最强,沙特出线概率*。两大*球星在最后一轮的对话是*看点,而且那场比赛也很有可能关乎波兰与墨西哥的出线之争。
出线之争外,本小组看点还有各大洲技术流的碰撞,沙特、墨西哥和阿根廷都有细腻的脚下技术,这一点或许会让实力偏弱的沙特队看到更多机会,他们另外一个优势就是这次世界杯是在他们的邻国举行,在一定程度上会增加主场的感觉。
D组
法国、丹麦、突尼斯、附加赛球队
(澳大利亚/阿联酋/秘鲁)
虽然还有一个名额未确定,但这组已经让球迷感到十分熟悉。2018年世界杯时,法国、丹麦、秘鲁和澳大利亚就同处一组,两支欧洲球队也不出意外地晋级淘汰赛。其实今年的出线形势与上次也有很多相似之处,澳大利亚近两届世界杯小组赛6场比赛一胜难求,阿联酋上一次亮相世界杯赛场还要追溯到1990年,即便是实力相对更强的秘鲁队,在欧洲整体实力和个人能力都不占优的情况下,要想从小组突围也是十分困难的。
突尼斯在非洲区预选赛最后一轮争夺中淘汰马里晋级。日前有消息称,突尼斯足协正在与几名具有双重国籍的球员沟通,他们有可能在世界杯赛场上代表球队出战。不过,此举未必会对小组赛格局产生太大影响。突尼斯上届世界杯面对巴拿马时拿到了40年来世界杯首胜,但面对两支欧洲强队英格兰和比利时都未能讨到便宜。
法国和丹麦仍是本组*的出线热门,小组第一之争依然会十分激烈。法国和丹麦两队历史上交锋过10余次,法国队只是略占上风,在得失球方面甚至还处于劣势。法国作为世界杯卫冕*,阵容实力自然更胜一筹,但豪华阵容背后也不无更衣室团结问题的隐忧。团结一致的战斗力则恰恰是丹麦在去年欧锦赛上闯进四强的关键所在。
E组
西班牙、德国、日本、附加赛球队
(哥斯达黎加/新西兰)
本组目前还有一个名额需要附加赛揭晓,但已经堪称“死亡之组”,西班牙、德国和日本的目标都不止是小组赛出线,然而此次必定至少有一支球队在小组赛后就将打道回府。本组另外一个名额将在哥斯达黎加和新西兰两队之间产生。
德国和西班牙两队在21世纪以来都获得过世界杯*,在国际大赛交手过很多次。虽然从交战历史上看,德国队在双方20余次交锋中略占优势,但西班牙队近10年来显然是德国队最不想碰到对手之一。自从2008年欧锦赛以来,西班牙在正式比赛中对阵德国的战绩是3胜1平。2020年的欧国联比赛中,西班牙队更是曾以6比0大胜德国队,让世界足坛震惊。
德国和西班牙两队的实力都毋庸置疑,但其实也都存在不稳定的问题。同组的日本队也不是一个可以轻易对付的对手,尤其是对于首场比赛就要与日本交手的德国队而言。
目前在德甲和德乙联赛中踢球的日本球员有10多人,届时出现在世界杯赛场的日本队身上会有不少德国足球印迹,除了像队长远藤航这样正在德甲踢球的大将,还有大迫勇也这样曾经效力于德甲联赛球队的球员。
德国和日本在10多年前曾经有过两次交手,德国1胜1平,但时至今日双方实力都发生了不少变化,德国更强,但也没有达到无法击败的程度。值得一提的是,在世界杯分组抽签前,两队原本计划在世界杯前的国际比赛日进行一场热胜赛,但分组形势揭晓后,计划不得不随之改变。两队将在小组赛首轮碰面,输球一方将在之后不得不面对必须拿下西班牙的巨大压力。
F组
比利时、加拿大、摩洛哥、克罗地亚
F组的形势相对波澜不惊,比利时的硬实力最强,加拿大能够力压墨西哥和美国两队锁定中北美区头名自有其道理,连续第二次从非洲区脱颖而出的摩洛哥也必定期待有更大作为,而有莫德里奇压阵的克罗地亚是任何世界强队都必须予以重视的对手。
就传统印象而言,比利时和克罗地亚两队的优势应该比较明显,但不可否认的是,即便不能说两队较之*时已经走在下坡路,但确实都存在一定程度的老化问题。本次世界杯很有可能是比利时“黄金一代”和克罗地亚灵魂人物莫德里奇的世界杯谢幕演出。
反观貌似竞争力一般的加拿大,却是在明显的上升轨道上。加拿大队时隔36年重回世界杯舞台,主教练赫德曼是不得不提的人。这位英国人与加拿大足球渊源很深,是加拿大足球变革的核心人物,此前他带领加拿大女足的表现同样让人印象深刻。
值得一提的是,赫德曼获得成功的力量并非都源自英国本土,他球员时代的成就并不出众,随之而来的质疑伴让在他执教生涯初期挑战很大。其实他的足球哲学受巴西影响很深,在求学巴西期间,他发现足球原来可以是一门艺术,这让他受益匪浅。
回顾赫德曼在加拿大取得的成绩,称之为加拿大足球的“颠覆者”并不为过,他改变了加拿大的足球观念。众所周知,加拿大、美国和墨西哥将一同主办2026年世界杯,这种背景下,这位教练带领加拿大本次世界杯的每一步都会备受瞩目,影响力和效果也会被放大。
G组
巴西、塞尔维亚、瑞士、喀麦隆
本组头号热门非巴西莫属,欧洲区预选赛表现惊艳的塞尔维亚、在欧洲区表现稳定的瑞士和非洲传统强队喀麦隆,虽然很难在根本上对“桑巴军团”以小组头名身份出线造成太大威胁,但能和5次世界杯*得主交手,他们都不会缺少动力,而且比赛结果也会影响3支球队间的出线权争夺。
巴西队在小组赛将轮番和“老熟人”碰面。上届世界杯时,巴西队就曾与瑞士和塞尔维亚两队同组,结果巴西首轮战平瑞士,末轮两球战胜塞尔维亚。这一次,巴西首轮将再次对阵塞尔维亚,不过相比于4年前,拥有弗拉霍维奇和塔迪奇等球星的塞尔维亚显然会更难对付。要知道,塞尔维亚和瑞士在欧洲区预选赛小组赛是分别力压葡萄牙和意大利两队获得直接出线权,其竞争力和韧性都不容小觑。
巴西最后一轮与喀麦隆的较量同样看点十足。巴西在1994年世界杯和2014年世界杯时曾两次与喀麦隆交手,他们都是净胜对手3球。其实不仅是对阵喀麦隆,巴西面对非洲球队的整体成绩都很出色。在一定程度上,非洲球队具有的优势巴西都有,甚至更强,但同时巴西队又具备一些非洲球队缺少的技战术素养。喀麦隆这次能否做到“事不过三”值得关注,像以往一样,这支非洲传统强队中不缺乏才华横溢的球星,如何让整体战斗力发挥得更好要看主教练里格贝特·宋的表现。这位喀麦隆足球传奇人物早在1994年就以17岁的年龄成为当届世界杯年龄最小的球员,巴西队的表现也给他留下了深刻的印象。
H组
葡萄牙、加纳、乌拉圭、韩国
乌拉圭曾在2010年世界杯先后淘汰韩国和加纳,2018年世界杯1/8决赛,他们又将葡萄牙挡在八强之外。一方面看,乌拉圭对在心理层面占据优势,但在没有常胜将军的足球场上,其他球队也会抓住每一个机会实现复仇。
韩国和葡萄牙时隔20年再次在世界杯相遇也不缺乏看点。2002年韩日世界杯小组赛最后一轮,韩国队凭借朴智星的进球将拥有菲戈的葡萄牙挡在淘汰赛之外。2014年世界杯上,葡萄牙在小组赛中2比1战胜了加纳队。
这些比赛都不远,而且竞争之激烈程度和话题性都很强。比如2010年乌拉圭淘汰加纳的那场淘汰赛中,苏亚雷斯在加时赛最后时刻用手挡出加纳的必进球,自己被红牌罚下,但随后主罚点球的吉安罚丢了制胜点球,加纳最终在点球大战中告负。2002年韩国与葡萄牙的比赛中,葡萄牙阵中的平托和贝托先后领到红牌被发下后,韩国队的进球让葡萄牙的出现希望破灭。
总体而言,本组各队之间过往几届世界杯充满各种恩怨。葡萄牙本次晋级世界杯之路充满坎坷,但只要他们出现在世界杯舞台,仍是有能力争夺*的*强队,乌拉圭队的实力也不遑多让,加纳则是淘汰了非洲传统强队尼日利亚后获得的宝贵名额。面对这样一个小组,葡萄牙人本托挂帅的韩国队要想从小组突围,难度可想而知。
本版撰文
中国体育报
随着帕克退役,联盟又失去了一丝古典热爱的气息。
提到托尼帕克,很多人可能已经忘了,13年总决赛G1,那个杀死比赛的一打二转身上篮杀死比赛,帮助马刺拿下热火的第一个主场;也可能有人忘了他生涯*得分是55分,为GDP三人*。那么,他是一个什么样的球员呢?
今天,37岁的托尼-帕克正式退役
与那种传统观念里的*后卫似乎不太一样,他并不在某一方面冠绝联盟,倘若说帕克是像斯托克顿那样的组织型后卫,那怕是对不起他的抛投手感和终结能力;倘若说他是像威少库里那样以个人进攻为主的后卫,我却又觉得可惜了他与邓肯之间经典的挡拆配合。人们在讨论联盟*控卫时,总会忽略帕克,但是他总会一一淘汰被讨论的人,然后获得总*。不论是纳什基德保罗,还是库里威少,在帕克正值*的那段时间里,每一个人都被他率队淘汰过,每一个人都曾经被均衡冷静犀利的法国跑车的折磨。
帕克有一手抛投绝技,他若称第二,没人敢说自己是第一
他不是没有把球队扛在自己肩上的时候,08-09赛季,转型前的邓肯和多伤的马努并不能在场上多帮助球队,帕克的得分助攻在常规赛和季后赛几乎都飙到生涯新高。12-13赛季,马刺被雷阿伦的续命三分抢走了*,但在这之前,是帕克连得五分助马刺反超热火,也就是说,那一年帕克差点助推马刺拿下第五冠,当然,神奇的丢掉两个后场板,神奇的詹姆斯和雷阿伦连着两个三分,神奇的卡哇伊罚球失误,让这个*晚了一年。对了,连续两年和热火三巨头的总决赛,帕克都是被对方防守*的詹姆斯重点照顾的,而14年夺冠赛季的西部半决,帕克几乎统治了那个系列赛,让刚刚绝杀火箭晋级的利拉德体会到姜还是老的辣。只是似乎马刺的强队形象和低调传统让他并不经常被大家讨论,而且大家对他实力的讨论似乎还不如对他和伊娃的花边新闻有兴趣。而帕克本人也是毫不在意,他低调到什么程度呢?甚至很多人忘了,他也有一座fmvp奖杯,甚至比勇士的功勋名将伊戈达拉还要多上那么一座总*和几个*阵。
甚至于在今天之前,我还以为帕克早已退役,不再征战了呢。
没有波波维奇,就没有如今的帕克
2014年的《*回忆录》中,帕克面对波波维奇、邓肯、吉诺比利,笑嘻嘻说:“我就怕有一天,我还在场上奔跑,你们却都离开了。”可黑色幽默的是,邓肯退役了,波波维奇还在,吉诺比利还在,帕克却不在圣安东尼奥了,黄蜂用两年一千万合同签下了他,让这位36岁的*控卫,去做肯巴-沃克的替补。而可笑的是,直到马努退役帕克离开,马刺才意识到再想找一个能理解老爷子战术的后卫到底有多难。
对于帕克而言,没有在马刺终老是他的遗憾,没有再回马刺打一年是我们的心结,我们可以伤感,但不用惊诧。帕克和现在还在战斗的老卡特一样,证明了这些老一辈球员对于篮球的那份无所求的纯粹的热爱,我们见过太多的商业悲剧,习惯了太多的生意场,可是像帕克这种低调地坚持着篮球的球员却还是真实地存在着,他让我们相信和见证那些最美好的,纯粹的,执着热爱的人们依然存在;而甚至,我们相信这些美好事物存在的信念,都比其本身存在的意义要大的多。
GDP全部告别,祝你们各自安好
金陵弟子来相送,欲行不行各尽觞。
法国跑车,一路顺风。
1. 理解 REST
REST 全称是 Representational State Transfer,中文意思是表征性状态转移。它*出现在2000年Roy Fielding的博士论文中,Roy Fielding是HTTP规范的主要编写者之一。值得注意的是REST并没有一个明确的标准,而更像是一种设计的风格。如果一个架构符合REST的约束条件和原则,我们就称它为RESTful架构。
理论上REST架构风格并不是绑定在HTTP上,只不过目前HTTP是*与REST相关的实例。
1.1. REST 原则
资源 可通过目录结构样式的 URIs 暴露表述 可以通过 JSON 或 XML 表达的数据对象或属性来传递消息 使用统一的 HTTP 方法(例如:GET、POST、PUT 和 DELETE)无状态 客户端与服务端之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都必须包含理解请求所必需的信息1.2. HTTP 方法
使用 HTTP 将 CRUD(create, retrieve, update, delete <创建、获取、更新、删除—增删改查>)操作映射为 HTTP 请求。如果按照HTTP方法的语义来暴露资源,那么接口将会拥有安全性和幂等性的特性,例如GET和HEAD请求都是安全的, 无论请求多少次,都不会改变服务器状态。而GET、HEAD、PUT和DELETE请求都是幂等的,无论对资源操作多少次, 结果总是一样的,后面的请求并不会产生比第一次更多的影响。
1.2.1. GET
安全且幂等获取信息1.2.2. POST
不安全且不幂等使用请求中提供的实体执行操作,可用于创建资源或更新资源1.2.3. PUT
不安全但幂等使用请求中提供的实体执行操作,可用于创建资源或更新资源1.2.4. DELETE
不安全但幂等删除资源1.3. HTTP status codes
状态码指示 HTTP 请求的结果:
1XX:信息2XX:成功3XX:转发4XX:客户端错误5XX:服务端错误1.4. 媒体类型
HTTP头中的 Accept 和 Content-Type 可用于描述HTTP请求中发送或请求的内容。如果客户端请求JSON响应,那么可以将 Accept 设为 application/json。相应地,如果发送的内容是XML,那么可以设置 Content-Type 为 application/xml 。
2. REST API 设计*实践
这里介绍一些设计 REST API 的*实践,大家先记住下面这句话:
URL 是个句子,其中资源是名词、HTTP 方法是动词。
2.1. 使用名词来表示资源
下面是一些例子:
GET - /users:返回用户列表GET - /users/100:返回一个特定用户POST - /users:创建一个新用户PUT - /users/200:更新一个特定用户DELETE - /users/711:删除一个特定用户2.2 在 HTTP 头中使用适当的序列化格式
客户端和服务端都需要知道通信所用的格式,这个格式要在 HTTP 头中指定:
Content-Type 定义请求格式Accept 定义一个可接受的响应格式列表2.3 Get 方法和查询参数不应当改变状态
使用 PUT, POST 和 DELETE 方法来改变状态,不要使用 GET 方法来改变状态:
GET2.4. 使用子资源表示关联
如果一个资源与另一个资源关联,使用子资源:
GET /cars/711/drivers/ 返回711号汽车的驾驶员列表GET /cars/711/drivers/4 返回711号汽车的第4号驾驶员2.5. 使用适当的 HTTP 方法 (动词)
再回顾一下这句话:
GET:获取在URI资源中指定的表述,响应消息体包含所请求资源的细节。POST:创建一个URI指定的新资源,请求消息体提供新资源的细节。注意,POST也可以触发一些操作,而不一定是要创建新资源。PUT:创建或替代指定URI的资源。请求消息体指定要创建或更新的资源。DELETE:移除指定URI的资源。URL 是个句子,其中资源是名词、HTTP 方法是动词。
2.6. HTTP 响应状态码
当客户端通过API向服务端发起一个请求时,客户端应当知道反馈:是否失败、通过或者请求错误。HTTP 状态码是一批标准化代码,在不同的场景下有不同的解释。服务器应当总是返回正确的状态码。
下面是重要的HTTP代码分类:
2.7. 名称规约
你可以遵循任何名称规约,只要保持跨应用一致性即可。如果请求体和响应体是 JSON 类型,那么请遵循驼峰名称规约。
2.8. 搜索、排序、过滤与分页
上面一些示例都是在一个数据集上的简单查询,对于复杂的数据,我们需要在 GET 方法 API 上加一些参数来处理。下面是一些示例:
排序:这个例子中,客户想获取排序的公司列表,GET /companies 应当在查询时接受多种排序参数。譬如 GET /companies?sort=rank_asc 将以等级升序的方式对公司进行排序。过滤:要过滤数据集,我们可以通过查询参数传递不同的选项。比如 GET /companies?category=banking&location=india 将过滤分类为银行且位于印度的公司。搜索:在公司列表中搜索公司名的 API 端点应当是 GET /companies?search=Digital。分页:当数据集太大时,我们应当将数据集分割成小的数据块,这样有利于提升服务端性能,也方便客户端处理响应。如 GET /companies?page=23 意味着获取公司列表的第 23 页数据。2.9. Restful API 版本
一般使用不带点的简单数字表示版本,数字前加字母v代表版本号,如下所示:
/blog/api/v1http://api.yourservice.com/v1/companies/34/employees2.10. 处理 JSON 错误体
API 错误处理机制是很重要的,而且要好好规划。极力推荐总是在返回字段中包含错误消息。一个 JSON 错误体应当为开发者提供一些有用的信息:错误消息、错误代码以及详细描述。下面是一个较好的示例:
{ "code": 1234, "message": "Something bad happened :(", "description": "More details about the error here"}1.2.3.4.5.
2.11. 如何创建 Rest API URL
推荐使用下面格式的 URL:
http(s)/{域名(:端口号)}/{表示REST API的值}/{API版本}/{识别资源的路径}http(s)/{表示REST API的域名(:端口号)}/{API 版本}/{识别资源的路径}3. 开发基于 Spring Boot 的 Restful Web 服务
Spring Boot 提供了构建企业应用中 RESTful Web 服务的*支持。
3.1. 引入依赖
要构建 RESTful Web 服务,我们需要在构建配置文件中加上 Spring Boot Starter Web 依赖。
对于 Maven 用户,使用以下的代码在 pom.xml 文件中加入依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>1.2.3.4.
对于 Gradle 用户,使用以下的代码在 build.gradle 文件中加入依赖:
compile('org.springframework.boot:spring-boot-starter-web')1.
3.2. Rest 相关注解
在继续构建 RESTful web 服务前,建议你先要熟悉下面的注解:
Rest Controller
@RestController 注解用于定义 RESTful web 服务。它提供 JSON、XML 和自定义响应。语法如下所示:
@RestControllerpublic class ProductServiceController {}1.2.3.
Request Mapping
@RequestMapping 注解用于定义请求 URI 以访问 REST 端点。我们可以定义 Request 方法来消费 produce 对象。默认的请求方法是 GET:
@RequestMapping(value = "/products")public ResponseEntity<Object> getProducts() { }Request Body @RequestBody 注解用于定义请求体内容类型。public ResponseEntity<Object> createProduct(@RequestBody Product product) {}1.2.3.4.5.6.
Path Variable
@PathVariable 注解被用于定义自定义或动态的请求 URI,Path variable 被放在请求 URI 中的大括号内,如下所示:
public ResponseEntity<Object> updateProduct(@PathVariable("id") String id) {}1.2.
Request Parameter
@RequestParam 注解被用于从请求 URL 中读取请求参数。缺省情况下是必须的,也可以为请求参数设置默认值。如下所示:
public ResponseEntity<Object> getProduct(
@RequestParam(value = “name”, required = false, defaultValue = “honey”) String name) {
}
3.3. 编写 REST API
GET API
下面的示例代码定义了 HTTP GET 请求方法。在这个例子里,我们使用 HashMap 来在存储 Product。注意我们使用了 POJO 类来存储产品。
在这里,请求 URI 是 /products,它会从 HashMap 仓储中返回产品列表。下面的控制器类文件包含了 GET 方法的 REST 端点:
package com.tutorialspoint.demo.controller;import java.util.HashMap;import java.util.Map;import org.springframework.http.HttpStatus;import org.springframework.http.ResponseEntity;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import com.tutorialspoint.demo.model.Product;@RestControllerpublic class ProductServiceController { private static Map<String, Product> productRepo = new HashMap<>(); static { Product honey = new Product(); honey.setId("1"); honey.setName("Honey"); productRepo.put(honey.getId(), honey); Product almond = new Product(); almond.setId("2"); almond.setName("Almond"); productRepo.put(almond.getId(), almond); } @RequestMapping(value = "/products") public ResponseEntity<Object> getProduct() { return new ResponseEntity<>(productRepo.values(), HttpStatus.OK); }}1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.
POST API
HTTP POST 请求用于创建资源。这个方法包含请求体。我们可以通过发送请求参数和路径变量来定义自定义或动态 URL。
下面的示例代码定义了 HTTP POST 请求方法。在这个例子中,我们使用 HashMap 来存储 Product,这里产品是一个 POJO 类。
这里,请求 URI 是 /products,在产品被存入 HashMap 仓储后,它会返回字符串。
package com.tutorialspoint.demo.controller;import java.util.HashMap;import java.util.Map;import org.springframework.http.HttpStatus;import org.springframework.http.ResponseEntity;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController;import com.tutorialspoint.demo.model.Product;@RestControllerpublic class ProductServiceController { private static Map<String, Product> productRepo = new HashMap<>(); @RequestMapping(value = "/products", method = RequestMethod.POST) public ResponseEntity<Object> createProduct(@RequestBody Product product) { productRepo.put(product.getId(), product); return new ResponseEntity<>("Product is created successfully", HttpStatus.CREATED); }}1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.
PUT API
HTTP PUT 请求用于更新已有的资源。这个方法包含请求体。我们可以通过发送请求参数和路径变量来定义自定义或动态 URL。
下面的例子展示了如何定义 HTTP PUT 请求方法。在这个例子中,我们使用 HashMap 更新现存的产品。此处,产品是一个 POJO 类。
这里,请求 URI 是 /products/{id},在产品被存入 HashMap 仓储后,它会返回字符串。注意我们使用路径变量 {id} 定义需要更新的产品 ID:
package com.tutorialspoint.demo.controller;import java.util.HashMap;import java.util.Map;import org.springframework.http.HttpStatus;import org.springframework.http.ResponseEntity;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController;import com.tutorialspoint.demo.model.Product;@RestControllerpublic class ProductServiceController { private static Map<String, Product> productRepo = new HashMap<>(); @RequestMapping(value = "/products/{id}", method = RequestMethod.PUT) public ResponseEntity<Object> updateProduct(@PathVariable("id") String id, @RequestBody Product product) { productRepo.remove(id); product.setId(id); productRepo.put(id, product); return new ResponseEntity<>("Product is updated successsfully", HttpStatus.OK); } }1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.
DELETE API
HTTP Delete 请求用于删除存在的资源。这个方法不包含任何请求体。我们可以通过发送请求参数和路径变量来定义自定义或动态 URL。
下面的例子展示如何定义 HTTP DELETE 请求方法。这个例子中,我们使用 HashMap 来移除现存的产品,用 POJO 来表示。
请求 URI 是 /products/{id} 在产品被从 HashMap 仓储中删除后,它会返回字符串。 我们使用路径变量 {id} 来定义要被删除的产品 ID。
package com.tutorialspoint.demo.controller;import java.util.HashMap;import java.util.Map;import org.springframework.http.HttpStatus;import org.springframework.http.ResponseEntity;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController;import com.tutorialspoint.demo.model.Product;@RestControllerpublic class ProductServiceController { private static Map<String, Product> productRepo = new HashMap<>(); @RequestMapping(value = "/products/{id}", method = RequestMethod.DELETE) public ResponseEntity<Object> delete(@PathVariable("id") String id) { productRepo.remove(id); return new ResponseEntity<>("Product is deleted successsfully", HttpStatus.OK); }}
今天的内容先分享到这里了,读完本文《托尼帕克》之后,是否是您想找的答案呢?想要了解更多托尼帕克、2020年世界杯小组分组赛相关的体育资讯请继续关注本站,是给小编*的鼓励。
女排世锦赛比赛时间表2022年女排世锦赛比赛时间表:9月28...
今天阿莫来给大家分享一些关于竞走*王丽萍教跑步王丽萍教练组处理结果...
今天阿莫来给大家分享一些关于18年辽宁男篮夺冠新闻发布会81岁蒋兴权...
战天狼都谁牺牲了《战天狼》牺牲的角色如下:温涛、张新奎:...
亚运会历届奖牌榜第7届1974年德黑兰亚运会中国仅次于日本...