论文结构是啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了论文结构是啥相关的知识,希望对你有一定的参考价值。

参考技术A 问题一:论文结构是什么?什么算好论文? 论文结构是什么?
一、论文是讨论某种问题或研究某种问题的学术性文章。在信息社会中,论文又是通过报刊、计算机网络等媒介传递的。
二、文本结构:这里所说的文本结构是指下面两层意义,一层是指论文的文本格式,另一层是指论文的逻辑结构。
1.文本格式:按标准的论文格式,一篇论文应分前置文题、正
文、注释和参考文献三大部分。
(1)前置文题:它包括四个要素:标题、作者、摘要、关键词。
标题:也叫题目,是文章的眼睛,显示论文的核心。论文标题的要求是准确、简明。常见的标题写法主要有三种:直接标明主题,提出自己的观点;表明论文论及的内容、范围等;正题、副题互作者:除某些特殊情况外,发表论文时,作者应在论文上署名。吾名可以是个人作者、合作作者或团体作者。合作作者按成员所毛咋用依次列出。论文上允许作者以化名署名,但作者必须把 *** 通知出版单位。新的标准化文本署名要求下注作者单位或联系
笔址。
摘要:也叫内容提要,是全文内容的高度概括,主要为了方便震者用较少的时间获取所需信息,并以此确定是否有必要通读全弋:此外,它还有助于读者做文摘资料卡。
摘要一般应该说明研究的目的、实验方法、技术成果和最终结论,而其重点是成果和结论。摘要的语言应简洁准确,文字可多可少,但无论如何,不得少于100字,多的不得多于500字,一般中文咱要以200~300字为宜。摘要互是报道性的,而不是论述性的,三尽量避免出现公式、图表和非规范化符号。
关键词:关键词是用来表达论文主题的词汇,一般是出现频率较多、能点出论文关键且在全文中不可缺少的词汇。关键词不宜过多,一般不超过五个,按语言逻辑依次排列。
(2)正文:正文是论文的主体,一篇好的论文应该首先给人以:青晰的纲目。例本篇论文指导中的编号形式。论文写作时,可据七章节编号,列出提纲。
一篇论文的字数是根据论述内容需要而定的,可长可短。但在现代信息社会中,人们出于时间的考虑,通常不主张论文过长,一般专题性研究论文宇数宜在3000―5000宇,实验报告、调查报告字数宜在3000字以内,所以编好论文的章节纲目显得非常重
要。
(3)注释及参考文献
注释又叫注解,它是对论文中的有关内容所作的一种文字说明。按照资料的来源分,注释可分为本文注和引文注。
本文注(含图注和表注)是作者对本文中有关内容所作的注释。引文注是作者对引用他人作品中的有关内容所作的注释。
参考文献是作者在论文中所参考的有关文献资料。为了保护知识产权,有必要注明文献出处。论文所参考的文献可以是文献中具体的某个内容,也可以是文献中的部分或全部思想。注录时可根据具体情况进行详注,或列出参考文献的目录。其格式如下:期刊文章:作者,刊名,年,卷(期),起(止)页码。专著:作者,书名,出版地,出版者,出版年(或加起止页码)。注释和参考文献一般置于论文末尾,所注编号应与文内编号一致。
2.逻辑结构
文本的逻辑结构是指论文在阐明所持观点、所研究的结果等时而采用的论述结构,目的是有条有理地说清问题。一般来说,论文论述过程分为引言(导言)、论证和结论三个部分,但不同性质的论文,其逻辑结构又有不同。
(1)研究性论文结构
研究性论文一般指阐明观点,解析问题,介绍成果之类的文章。这类论文的结构一般是:引言一论证一结论。
引言:鲜明地提出观点,提出所研究的问题的背景。概述研究的动机、目的、意义与方法。文字要简洁、明确、具体,使人看到引言就知道本文的价值。
论证:详......>>

问题二:论文结构不合理是什么意思 逻辑结构
文本的逻辑结构是指论文在阐明所持观点、所研究的结果等时而采用的论述结构,目的是有条有理地说清问题。一般来说,论文论述过程分为引言(导言)、论证和结论三个部分,但不同性质的论文,其逻辑结构又有不同。
(1)研究性论文结构
研究性论文一般指阐明观点,解析问题,介绍成果之类的文章。这类论文的结构一般是:引言一论证一结论。
引言:鲜明地提出观点,提出所研究的问题的背景。概述研究的动机、目的、意义与方法。文字要简洁、明确、具体,使人看到引言就知道本文的价值。
论证:详细阐述问题,证明作者所提出的论点。这部分要主次分明,段落衔接自如,结构上较多地采用总分并列法、层次法和对比法。
结论:归纳论点,强调研究结果。措词要严谨,文字要简洁。不能得出明确结论时,要说明有待进一步探讨。
(2)调研性报告结构
调研性报告一般是指对某种现象调研后所作的调查报告或考察报告。其作用是对收集的材料进行整理,发现问题,经过分析,揭示事物的本质,探索规律,找出解决问题的途径。基本结构是:引言一主体一讨论或建议一结论。引言:简短扼要地说明调查的目的、意义、任务、时间、地点、对冬、范围、方式等。要注意将调查的目的、调查的方法和过程等交・二:青楚。
主体:这部分主要是把调查来的大量材料经过分析整理,归纳二苦干项目,分别论述。要求是数据确凿,事例典型,材料可靠,观三巧确。写作顺序有按调查顺序逐点写的,有按被调查事物产生、t吴和变化的过程来写的,也有按事物对比写的。
讨论或建议:依据分析,对结果作出理论上的进一步阐述,深、地探讨一些问题,提出自己的建设性建议。
结论:强调结果。
(3)实验性报告结构
实验性报告一般指对某种现象、假说进行实验后,对实验过气,结果进行总结的科学实验报告。基本结构是:引言一实验方法《验结果一分析和讨论一结论。
引言:交代实验的背景、目的、假说、意义和价值。
实验方法:包括实验对象的确定,实验的组织类型,实验所用心,实验的具体步骤,实验变量的测定,无关因子的控制等。《验结果:提出数据和典型事例。十析和讨论:运用有关理论讨论和分析实验结果,包括:回答气说,对结果进行理论分析,把结果与同类研究结果进行比爷.壬三存在的问题和有待深入研究的问题,等等。毛迫:对来自实验的结果进行总结,回答实验提出的问题。

问题三:简述论文的基本结构 (一) 论文的基本结构
论文属于议论文,其基本结构一般包括三部分:论题,论证和结论.
1.论题:指论文真实性需要证明的命题.
2.论证:即论述并证明.主要指引用论据来证明论题的真实性的论述过程,是由论据推出论题时所使用的推理形式.
3.结论:即结束语,对文章所下的最后判断.其主要作用是:(1)总结全文,点明主题.(2)展望未来,增强信心.(3)抒发感情,增强感染力.
(二)论文组成部分
一篇完整的论文应当包括以下内容:
1.标题名称(题目)
论文标题应以最恰当,最简明的语词来反映论文中最重要的特定内容的逻辑组合,尽可能避免使用不常见的缩写省略词,字符,代号,符号和公式等.论文标题一般不超过30个字.
2.作者姓名和单位
论文的署名包括:参与选定研究课题和制定研究方案的人员,直接参与全部或主要部分研究工作并做出贡献的人员,参加撰写论文的人员.如果是两个或两个以上的人员联合完成的论文,应根据每个人员的贡献大小或根据约定排列名次.
3.论文摘要
摘要即摘录要点,是对论文内容的简短陈述,提示论文的主要观点,见解,论据或概括地简单介绍论文的主要内容.摘要文字要简明,确切.论文的中文摘要一般以200~400字为宜,重要的学术论文不超过1500字数
4.关键词(或主题词)
关键词是指用来表达论文全文主题内容信息的单词或术语,供资料查询之用.每篇论文的关键词一般选取3~5个词语.
5.提纲
提纲是指论文内容的要点.
6.引言(或称引论,前言,导言,绪论,序论和导论)
引言是论文的起始部分.内容复杂篇幅长的论文,称绪论,序论,要求讲清写作此文的动机,它的内容,意义,欲达之目的.主要是用来简要说明研究问题的内容,目的,方法和意义,阐明全文的主要观点(文章论点),借鉴会计领域中前辈及他人的研究情况,知识布局和理论基础,提出作者本人对会计理论和实践的继承与发展的研究设想以及研究方法,达到的预期成果和现实意义等.如果是调查报告还可以交代背景,说明调查方法.这部分内容具有提纲挈领的作用,意在概括与领起全文,但文字以少而精为宜.在正文里,不用写前言二字,一般写1个段落,也有写2个,3个甚至4个段落的.写完后,在转入本论时,中间最好空1行.
7.正文
正文是论文的核心部分,也是论文的主体部分,其功能就是:展开论题,分析论证.正文的内容就是深入分析文章引言提出的问题,运用理论研究和实践操作相结合进行分析论证,揭示出各专业领域客观事物内部错综复杂的联系及其规律性.正文撰写的内容反映出文章的逻辑思维性和语言表达能力,决定了论文的可理解性和论证的说服力.正文撰写必须做到实事求是,客观真切,准备充分,思维逻辑清晰,层次分明,通俗易懂.转正文撰写时采用的层次结构方式有以下三种形式:
1).直线推论方式.由文章中心论点出发层层深入地展开论述,由一点进行到另一点的逻辑推演,呈现出直线式的逻辑深入.
2).并列分论方式.把从属于基本论题的若干个下位论点并列起来,分别进行论述.
3).直线推论与并列分论相结合的方式.即直线分论中包含并列分论,而并列分论下又有直线推论,形成复杂的立体结构.
论文的正文部分通常采用第三种方式(即直线推论与并列推论相结合的方式)的结构层次.
8.结束语
结尾部分,文止而言尽,要照应开头,要体现全文的整体性.全文浑然一体,首尾呼应,既可以给人一种结构上完整的感觉,又可以收到概括全文,......>>

问题四:文章的结构是什么意思? 文章的结构,是文章部分与部分、部分与整体之间的内在联系和外部形式的统一
文章都是由中心意思、材料、结构三个要素组成的。中心意思是文章的“灵魂”,要明确无误;材料是“血肉”,要丰富,并能集中地反映中心;结构则是文章的“骨架”,是谋篇布局的手段,是运用材料反映中心思想的方法。
常见的文章结构方式有四种。
1、并列式:文章各部分的内容没有主次轻重之分。例如培根的《轮读书》,三个部分分别谈到了读书的目的、读书的方法、读书的好处,就是采用并列的结构。
2、总分式;先总述,再分说。这种关系还可以演变为“分―总”或“总―分―总”的结构方式。例如《应有格物致知的精神》一文采用的就是“总―分―总”的结构:先总说“格物”“致知”就是指现代学术的基础,即实地的探察,也就是现在所谓的实验。然后先儒家对“格物”“致知”意义的曲解和对“格物”“致知”精神的埋没;再阐述科学发展为什么需要川格物”“致知”的精神。最后从正反两个方面总结“格物”“致知”精神的重要性。
3、对照式:文中两部分内容或进行对比,或用这部分内容烘托另一部分内容。例如鲁迅先生的《中国人失掉自信力了吗》一文,前一部分反面批驳了敌论中的论据不能证明论点,即中国人失掉的是“他信力”,发展的是“自欺力”,而不是“自信力”直接批驳了敌论;后一部分从正面列举事实,提出正确的论点,我们中国人没有失掉自信力,间接地批驳了敌论。
4、递进式:文章几部分内容逐层深入。例如《不求甚解》一文,先从“不求甚解”一词的来历谈起,分析了陶渊明的读书方法,首先要“好读书”,二是主张读书要会意。再从正反两个方面举例说明,读书应当重在读懂书本的精神实质,而不是寻章摘句。最后进一步从正反两个方面论证了读书“不求甚解”的重要性。

问题五:什么是论文的基本结构 一、论文的名称:将你对XX的研究成果的核心概念列为题目并附下署名;二、内容提要:简明扼要的摘录你对XX论述的主要内容,要求精、短、完整、300字以内为宜;三、找关键词:从论文的题目、内容提要和主要内容里找出3--8个,具有XX特征的关键词,关键词必须是能正确表述论文中心内容的词汇。需另起一行,将关键词排在内容提要的左下方,以便检索。四、写正文的引言(前言):概括的表明作者写此论文的目的、意义及论述的范围。要求短小、精悍,紧扣主题。五、论文的正文部分: 1)提出XX的问题(论点); 2)分析XX的问题(论据和论证方法); 3)解决XX的问题(解决方法和解决步骤); 4)得出结论。六、列注论文的参考文献
一篇论文的参考文献是将论文在研究和写作中可参考或引证的主要文献资料,列于论文的末尾。参考文献应另起一页,标注方式按《GB7714-87文后参考文献著录规则》进行。
中文:标题--作者--出版物信息(版地、版者、版期)
英文:作者--标题--出版物信息
所列参考文献的要求是:
1)所列参考文献应是正式出版物,以便读者考证。
2)所列举的参考文献要标明序号、著作或文章的标题、作者、出版物信息。要想写好一篇论文还应注意以下几点:一、论题新颖,题目生动;二、实验数据或调研数据准确;三、论点清晰、紧扣主题;四、论据充分、分析透彻、论证方法科学;五、解决问题的方法正确、科学,步骤清晰、不繁复;六、调研及资料准备工作充分;七、论文格式符合论文的规范要求。

问题六:论文的组成部分 毕业论文是教学科研过程的一个环节,也是学业成绩考核和评定的一种重要方式。毕业论文的目的在于总结学生在校期间的学习成果,培养学生具有综合地创造性地运用所学的全部专业知识和技能解决较为复杂问题的能力并使他们受到科学研究的基本训练。
一、标题
标题是文章的眉目。各类文章的标题,样式繁多,但无论是何种形式,总要以全部或不同的侧面体现作者的写作意图、文章的主旨。毕业论文的标题一般分为总标题、副标题、分标题几种。
(一)总标题
总标题是文章总体内容的体现。常见的写法有:
①揭示课题的实质。这种形式的标题,高度概括全文内容,往往就是文章的中心论点。它具有高度的明确性,便于读者把握全文内容的核心。诸如此类的标题很多,也很普遍。如《关于经济体制的模式问题》、《经济中心论》、《县级行政机构改革之我见》等。
②提问式。这类标题用设问句的方式,隐去要回答的内容,实际上作者的观点是十分明确的,只不过语意婉转,需要读者加以思考罢了。这种形式的标题因其观点含蓄,轻易激起读者的注重。如《家庭联产承包制就是单干吗?》、《商品经济等同于资本主义经济吗?》等。
②交代内容范围。这种形式的标题,从其本身的角度看,看不出作者所指的观点,只是对文章内容的范围做出限定。拟定这种标题,一方面是文章的主要论点难以用一句简短的话加以归纳;另一方面,交代文章内容的范围,可引起同仁读者的注重,以求引起共鸣。这种形式的标题也较普遍。如《试论我国农村的双层经营体制》、《正确处理中心和地方、条条与块块的关系》、《战后西方贸易自由化剖析》等。
④用判定句式。这种形式的标题给予全文内容的限定,可伸可缩,具有很大的灵活性。文章研究对象是具体的,面较小,但引申的思想又须有很强的概括性,面较宽。这种从小处着眼,大处着手的标题,有利于科学思维和科学研究的拓展。如《从乡镇企业的兴起看中国农村的希望之光》、《科技进步与农业经济》、《从“劳动创造了美”看美的本质》等。
⑤用形象化的语句。如《激励人心的治理体制》、《科技史上的曙光》、《普照之光的理论》等。
标题的样式还有多种,作者可以在实践中大胆创新。
(二)副标题和分标题
为了点明论文的研究对象、研究内容、研究目的,对总标题加以补充、解说,有的论文还可以加副标题。非凡是一些商榷性的论文,一般都有一个副标题,如在总标题下方,添上“与××商榷”之类的副标题。
另外,为了强调论文所研究的某个侧重面,也可以加副标题。如《如何看待现阶段劳动报酬的差别――也谈按劳分配中的资产阶级权利》、《开发蛋白质资源,提高蛋白质利用效率――探讨解决吃饭问题的一种发展战略》等。
设置分标题的主要目的是为了清楚地显示文章的层次。有的用文字,一般都把本层次的中心内容昭然其上;也有的用数码,仅标明“一、二、三”等的顺序,起承上启下的作用。需要注重的是:无论采用哪种形式,都要紧扣所属层次的内容,以及上文与下文的联系紧密性。
二、目录
一般说来,篇幅较长的毕业论文,都没有分标题。设置分标题的论文,因其内容的层次较多,整个理论体系较庞大、复杂,故通常设目录。
设置目录的目的主要是:
1.使读者能够在阅读该论文之前对全文的内容、结构有一个大致的了解,以便读者决定是读还是不读,是精读还是略读等。
2.为读者选读论文中的某个分论点时提供方便。长篇论文,除中心论点外,还有许多分论点。当读者需要进一步了解某个分论点时,就可以依靠目录而节省时间。
目录一般放置在论文正文的前面,因而是论文的导读图。要使目录真正起到导读图的作用,必须注重:
1.......>>

问题七:论文分为哪几部分? 论文的写作
一 论文基本结构
国家标准局1987年颁布《科学技术报告,学位论文和学术论文的编写格式》(GB7713-87)和《文后参考文献著录规则》(GB7714-87)
1,一般格式:
⑴ 题名.是以最恰当,最简明的语词反映论文中最重要的特定内容的逻辑组合,应避免使用的不常见的省略词,首字母缩写字,字符,代号和公式,字数一般不宜超过20个题名用语.
⑵ 作者姓名和单位,两人以上,一般按贡献大小排列名次.
① 文责自负;②记录成果;③便于检索
⑶ 摘要:是论文的内容不加注释和评论的简短陈述,中文摘要一般不会超过300字,不阅读全文,即可从中获得重要信息.外文250实词.
包括:①本研究重要性;②主要研究内容,使用方法;③总研究成果,突出的新见解,阐明最终结论.重点是结果和结论.
⑷ 关键词.是从论文中选取出以表示全文主题内容信息款目的单词或术语,一般3-7个,有专用《主题词表》.
⑸ 引言.回来说明研究工作的目的,范围,相关领域的前,人工作和知识布局,理论基础和分析,研究设想,研究方法,预期结果和意义.
⑹ 正文
⑺ 结论:是指全文最终的,总体的结论,而不是正文中各段小结的简单重复.要求准确,完整,明晰,精练.
⑻ 致谢:是对论文写作有过帮助的人表示谢意,要求态度诚恳,文字简洁.
⑼ 参考文献表(注释),文中直接引用过的各种参考文献,均应开列,格式包括作者,题目和出版事项(出版地,出版社,出版年,起始页码)连续出版物依次注明出版物名称,出版日期和期数,起止页码.
⑽ 附录:在论文中注明附后的文字图表等.
二 正文的基本构成
1,学术论文的基本构成
前置部分:题名 ,论文作者,摘要,关键词
主体部分:绪论(引言,导论,序论,引论)正文,结论,注释,参考文献,后记(致谢)
2,正文的基本构成:绪论,本论(直线推论)
结论 (并列分论)
⑵ 提纲项目:
题目
基本论点
内容纲要
一,大项目(上位论点,大段段旨)
一,中项目(下位论点,段旨)
① 小项目(段中心,一个材料)
标题写法:简洁,扼要,别人不易误解
句子写法:具体,明确
3,论文提纲编写
⑴ 论文写作设计图:(三级标目)
一,
二, 一
三, 二 1.
三 2.
3.
4,执笔顺序与起草方法
⑴ 顺序
自然顺序:结论―本论―结论
颠倒顺序:本论―结论―结论
⑵ 方法(初稿)一气呵成;分部写成.
5,学术论文的构段
⑴ 统一,完整的规范段(另兼义段,不完整段)
⑵ 段首和段尾主句显示段旨.(也有段中或兼置首尾)
⑶ 容量运当,一般长段较多

问题八:论文的的整个框架结构是什么意思 首先,介绍一下背景以及你做该项目的意义所在;然后是其他人的研究现状,以及其他人得出的结论;然后写写自己做的东西,得出的结论,可以支持结论的依据;最后写写可以改进的地方,以及参考文献。

问题九:毕业论文的基本结构 毕业论文的基本结构与要求 2008年11月05日 星期三 17:44 (一)论文的基本结构与要求
毕业论文的结构是作者在写作上的布局、谋划和安排。不同性质,内容的论文在表现手法上虽有差异,但基本结构却大致相同。一篇完整的毕业论文通常应包括题目、作者、单位(邮编)、摘要、关键词、前言、正文、结论、致谢、参考文献、附录等组成部分。下面谈谈其主要部分的要求及写法。
1、题目
题目是文章的标签,是论文内容的高度概括,是论文的灵魂和核心,也是编制索引、查阅文献的重要线索。论文的题目应符合以下要求:
准确 论文题目要准确地表达论文核心论点或中心内容,恰如其分地指明研究的范围和深度,如《数学能力的成分与结构》就显得准确、明了。有一位教师的论文题目为《全面提高素质・培养学生能力》,这个题目把因果关系颠倒了,就不够准确。题目要符合内容,不能过大、过泛、过虚。若用形象手法叙述,则比喻要合适,如以素质教育为“圆心”,以课堂教学为“半径”,深入开展素质教育,这样的题目就不合适了。
题目用一个标题表达还不够充分,也可用小标题。小标题通常是大标题的延伸、补充或具体化。如一篇研究叶圣陶语文教育观的文章,大标题为《民族的科学的大众的语文教育观》,小标题为《叶圣陶语文教育观探析》;又有一篇关于浮力知识点教学中如何实施素质教育的文章,大标题是《初中物理课堂素质教育初探》,小标题为《以浮力为例》。这两篇文章的题目均是主题观点明确,副题补充范围,两者相得益彰。
简洁 学术论文的题目必须简洁,高度概括文章的内容,切忌文字繁多、冗长。一般一个题目的字数不宜超过20个。
新颖 学术论文的题目不仅应准确、简洁,还应新颖、不落俗套,给人以新鲜感,引人关注。给读者以视觉冲击、引人注目的题目不仅吸引读者去阅读文章,也使读者产生经久难忘的印象。例如《发现法的再发现》,《非数学问题的数学分析》等,题目就较新颖,使人过目不忘。
便于分类 从题目能容易判明论文内容从属的学科领域和方向,既便于资料情报部门收录,又便于读者查阅。如《英语言语控制与课堂教学效率》是关于英语教学的,《素质教育观下的数学教育》是有关数学教育内容的。而题为《机遇与挑战》的文章,就不知是从属什么专业领域的论文了,因为任何领域中都会遇到与之相同的论题。
2、摘要
摘要是论文内容不加注释和评论的简短陈述。它要求把文章讨论的主要问题、取得的主要成果作明晰的交代,使无法或无时间阅读完全文的读者读后能获得大致全面、清楚、明了的信息与印象。摘要的语句最好不要与前言或结论部分雷同,以免给人以重复之感。摘要部分的文字一般为正文全文字数的5%左右,我国报刊杂志通常要求摘要为200-300字。由于摘要概括了全文的内容,因此,往往是全文的写作结束后,再写摘要。
内容摘要示例 学会共同生活:学校德育的支柱
--探索价值多元化背景下学校德育改革之路
作者:乐韵 华东师范大学97级教育学专业
内容摘要:改革开放以来,我国经济制度的转型、网络技术的发展带来了社会价值的多元化,给中华传统价值观带来了冲击,同时也向以传统主流价值为支柱的学校德育提出了挑战。面对价值多元化的挑战,学校德育应回归生活,以社会共同生活为支柱,立足于共同生活中的普遍价值,在平等的基础上,在开放的环境中,以对话的方式使学生认同和理解多元价值,从而学会共同生活。
关键词:价值多元化 学校德育
画中人与现实人
......>>

RestFul是啥

 1. 什么是REST

  REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移。 它首次出现在2000Roy Fielding的博士论文中,Roy FieldingHTTP规范的主要编写者之一。 他在论文中提到:我这篇文章的写作目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构。REST指的是一组架构约束条件和原则。如果一个架构符合REST的约束条件和原则,我们就称它为RESTful架构。

  REST本身并没有创造新的技术、组件或服务,而隐藏在RESTful背后的理念就是使用Web的现有特征和能力, 更好地使用现有Web标准中的一些准则和约束。虽然REST本身受Web技术的影响很深, 但是理论上REST架构风格并不是绑定在HTTP上,只不过目前HTTP是唯一与REST相关的实例。 所以我们这里描述的REST也是通过HTTP实现的REST

  2. 理解RESTful

  要理解RESTful架构,需要理解Representational State Transfer这个词组到底是什么意思,它的每一个词都有些什么涵义。 下面我们结合REST原则,围绕资源展开讨论,从资源的定义、获取、表述、关联、状态变迁等角度,列举一些关键概念并加以解释。

  • 资源与URI
  • 统一资源接口
  • 资源的表述
  • 资源的链接
  • 状态的转移

  2. 1 资源与URI

  REST全称是表述性状态转移,那究竟指的是什么的表述? 其实指的就是资源。任何事物,只要有被引用到的必要,它就是一个资源。资源可以是实体(例如手机号码),也可以只是一个抽象概念(例如价值) 。下面是一些资源的例子:

  • 某用户的手机号码
  • 某用户的个人信息
  • 最多用户订购的GPRS套餐
  • 两个产品之间的依赖关系
  • 某用户可以办理的优惠套餐
  • 某手机号码的潜在价值

  要让一个资源可以被识别,需要有个唯一标识,在Web中这个唯一标识就是URI(Uniform Resource Identifier)URI既可以看成是资源的地址,也可以看成是资源的名称。如果某些信息没有使用URI来表示,那它就不能算是一个资源, 只能算是资源的一些信息而已。URI的设计应该遵循可寻址性原则,具有自描述性,需要在形式上给人以直觉上的关联。这里以github网站为例,给出一些还算不错的URI

  • https://github.com/git
  • https://github.com/git/git
  • https://github.com/git/git/blob/master/block-sha1/sha1.h
  • https://github.com/git/git/commit/e3af72cdafab5993d18fae056f87e1d675913d08
  • https://github.com/git/git/pulls
  • https://github.com/git/git/pulls?state=closed
  • https://github.com/git/git/compare/master…next

  下面让我们来看看URI设计上的一些技巧:

  • 使用_-来让URI可读性更好

  曾经Web上的URI都是冰冷的数字或者无意义的字符串,但现在越来越多的网站使用_-来分隔一些单词,让URI看上去更为人性化。 例如国内比较出名的开源中国社区,它上面的新闻地址就采用这种风格, 如http://www.oschina.net/news/38119/oschina-translate-reward-plan

  • 使用/来表示资源的层级关系

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

  • 使用?用来过滤资源

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

  • ,;可以用来表示同级资源的关系

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

  2. 2 统一资源接口

  RESTful架构应该遵循统一接口原则,统一接口包含了一组受限的预定义的操作,不论什么样的资源,都是通过使用相同的接口进行资源的访问。接口应该使用标准的HTTP方法如GETPUTPOST,并遵循这些方法的语义。

  如果按照HTTP方法的语义来暴露资源,那么接口将会拥有安全性和幂等性的特性,例如GETHEAD请求都是安全的, 无论请求多少次,都不会改变服务器状态。而GETHEADPUTDELETE请求都是幂等的,无论对资源操作多少次, 结果总是一样的,后面的请求并不会产生比第一次更多的影响。

  下面列出了GETDELETEPUTPOST的典型用法:

  GET

  • 安全且幂等
  • 获取表示
  • 变更时获取表示(缓存)
  • 200OK- 表示已在响应中发出
  • 204(无内容) - 资源有空表示
  • 301Moved Permanently- 资源的URI已被更新
  • 303See Other- 其他(如,负载均衡)
  • 304not modified- 资源未更改(缓存)
  • 400 bad request- 指代坏请求(如,参数错误)
  • 404 not found- 资源不存在
  • 406 not acceptable- 服务端不支持所需表示
  • 500 internal server error- 通用错误响应
  • 503 Service Unavailable- 服务端当前无法处理请求

  POST

  • 不安全且不幂等
  • 使用服务端管理的(自动产生)的实例号创建资源
  • 创建子资源
  • 部分更新资源
  • 如果没有被修改,则不过更新资源(乐观锁)
  • 200OK- 如果现有资源已被更改
  • 201created- 如果新资源被创建
  • 202accepted- 已接受处理请求但尚未完成(异步处理)
  • 301Moved Permanently- 资源的URI被更新
  • 303See Other- 其他(如,负载均衡)
  • 400bad request- 指代坏请求
  • 404 not found- 资源不存在
  • 406 not acceptable- 服务端不支持所需表示
  • 409 conflict- 通用冲突
  • 412 Precondition Failed- 前置条件失败(如执行条件更新时的冲突)
  • 415 unsupported media type- 接受到的表示不受支持
  • 500 internal server error- 通用错误响应
  • 503 Service Unavailable- 服务当前无法处理请求

  PUT

  • 不安全但幂等
  • 用客户端管理的实例号创建一个资源
  • 通过替换的方式更新资源
  • 如果未被修改,则更新资源(乐观锁)
  • 200 OK- 如果已存在资源被更改
  • 201 created- 如果新资源被创建
  • 301Moved 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- 服务当前无法处理请求

  DELETE

  • 不安全但幂等
  • 删除资源
  • 200 OK- 资源已被删除
  • 301 Moved Permanently- 资源的URI已更改
  • 303 See Other- 其他,如负载均衡
  • 400 bad request- 指代坏请求
  • 404 not found- 资源不存在
  • 409 conflict- 通用冲突
  • 500 internal server error- 通用错误响应
  • 503 Service Unavailable- 服务端当前无法处理请求

  下面我们来看一些实践中常见的问题:

  • POSTPUT用于创建资源时有什么区别?

  POSTPUT在创建资源的区别在于,所创建的资源的名称(URI)是否由客户端决定。 例如为我的博文增加一个java的分类,生成的路径就是分类名/categories/java,那么就可以采用PUT方法。不过很多人直接把POSTGETPUTDELETE直接对应上CRUD,例如在一个典型的rails实现的RESTful应用中就是这么做的。 我认为,这是因为rails默认使用服务端生成的ID作为URI的缘故,而不少人就是通过rails实践REST的,所以很容易造成这种误解。

  • 客户端不一定都支持这些HTTP方法吧?

  的确有这种情况,特别是一些比较古老的基于浏览器的客户端,只能支持GETPOST两种方法。 在实践上,客户端和服务端都可能需要做一些妥协。例如rails框架就支持通过隐藏参数_method=DELETE来传递真实的请求方法, 而像Backbone这样的客户端MVC框架则允许传递_method传输和设置X-HTTP-Method-Override头来规避这个问题。

  • 统一接口是否意味着不能扩展带特殊语义的方法?

  统一接口并不阻止你扩展方法,只要方法对资源的操作有着具体的、可识别的语义即可,并能够保持整个接口的统一性。 WebDAV就对HTTP方法进行了扩展,增加了LOCKUPLOCK等方法。而githubAPI则支持使用PATCH方法来进行issue的更新,例如:

  PATCH /repos/:owner/:repo/issues/:number

  不过,需要注意的是,像PATCH这种不是HTTP标准方法的,服务端需要考虑客户端是否能够支持的问题。

  • 统一资源接口对URI有什么指导意义?

  统一资源接口要求使用标准的HTTP方法对资源进行操作,所以URI只应该来表示资源的名称,而不应该包括资源的操作。 通俗来说,URI不应该使用动作来描述。例如,下面是一些不符合统一接口要求的URI:

  • GET /getUser/1
  • POST /createUser
  • PUT /updateUser/1
  • DELETE /deleteUser/1

  如果GET请求增加计数器,这是否违反安全性?

  安全性不代表请求不产生副作用,例如像很多API开发平台,都对请求流量做限制。像github,就会限制没有认证的请求每小时只能请求60次。 但客户端不是为了追求副作用而发出这些GETHEAD请求的,产生副作用是服务端自作主张的。 另外,服务端在设计时,也不应该让副作用太大,因为客户端认为这些请求是不会产生副作用的。

  • 直接忽视缓存可取吗?

  即使你按各个动词的原本意图来使用它们,你仍可以轻易禁止缓存机制。 最简单的做法就是在你的HTTP响应里增加这样一个报头: Cache-control: no-cache。 但是,同时你也对失去了高效的缓存与再验证的支持(使用Etag等机制)。 对于客户端来说,在为一个REST式服务实现程序客户端时,也应该充分利用现有的缓存机制,以免每次都重新获取表示。

  • 响应代码的处理有必要吗?

  HTTP的响应代码可用于应付不同场合,正确使用这些状态代码意味着客户端与服务器可以在一个具备较丰富语义的层次上进行沟通。 例如,201“Created”)响应代码表明已经创建了一个新的资源,其URILocation响应报头里。 假如你不利用HTTP状态代码丰富的应用语义,那么你将错失提高重用性、增强互操作性和提升松耦合性的机会。 如果这些所谓的RESTful应用必须通过响应实体才能给出错误信息,那么SOAP就是这样的了,它就能够满足了。

  2. 3 资源的表述

  上面提到,客户端通过HTTP方法可以获取资源,是吧? 不,确切的说,客户端获取的只是资源的表述而已。 资源在外界的具体呈现,可以有多种表述(或成为表现、表示)形式,在客户端和服务端之间传送的也是资源的表述,而不是资源本身。 例如文本资源可以采用htmlxmljson等格式,图片可以使用PNGJPG展现出来。 资源的表述包括数据和描述数据的元数据,例如,HTTP“Content-Type” 就是这样一个元数据属性。

  那么客户端如何知道服务端提供哪种表述形式呢?

  答案是可以通过HTTP内容协商,客户端可以通过Accept头请求一种特定格式的表述,服务端则通过Content-Type告诉客户端资源的表述形式。

github为例,请求某组织资源的json格式的表述形式:

 

 

  假如github也能够支持xml格式的表述格式,那么结果就是这样的:

 

  下面我们来看一些实践上常见的设计:

  URI里边带上版本号

  有些APIURI里边带上版本号,例如:

  • http://api.example.com/1.0/foo
  • http://api.example.com/1.2/foo
  • http://api.example.com/2.0/foo

  如果我们把版本号理解成资源的不同表述形式的话,就应该只是用一个URL,并通过Accept头部来区分,还是以github为例,它的Accept的完整格式是:application/vnd.github[.version].param[+json]

  对于v3版本的话,就是Accept: application/vnd.github.v3。对于上面的例子,同理可以使用使用下面的头部:

  • Accept: vnd.example-com.foo+json; version=1.0
  • Accept: vnd.example-com.foo+json; version=1.2
  • Accept: vnd.example-com.foo+json; version=2.0

  使用URI后缀来区分表述格式

  像rails框架,就支持使用/users.xml/users.json来区分不同的格式。 这样的方式对于客户端来说,无疑是更为直观,但混淆了资源的名称和资源的表述形式。 我个人认为,还是应该优先使用内容协商来区分表述格式。

  如何处理不支持的表述格式

  当服务器不支持所请求的表述格式,那么应该怎么办?若服务器不支持,它应该返回一个HTTP 406响应,表示拒绝处理该请求。下面以github为例,展示了一个请求XML表述资源的结果:

 

  2. 4 资源的链接

  我们知道REST是使用标准的HTTP方法来操作资源的,但仅仅因此就理解成带CURDWeb数据库架构就太过于简单了。 这种反模式忽略了一个核心概念:超媒体即应用状态引擎(hypermedia as the engine of application state。 超媒体是什么? 当你浏览Web网页时,从一个连接跳到一个页面,再从另一个连接跳到另外一个页面,就是利用了超媒体的概念:把一个个把资源链接起来.

  要达到这个目的,就要求在表述格式里边加入链接来引导客户端。在《RESTful Web Services》一书中,作者把这种具有链接的特性成为连通性。下面我们具体来看一些例子。

  下面展示的是github获取某个组织下的项目列表的请求,可以看到在响应头里边增加Link头告诉客户端怎么访问下一页和最后一页的记录。 而在响应体里边,用url来链接项目所有者和项目地址。

 

  又例如下面这个例子,创建订单后通过链接引导客户端如何去付款。

 

  上面的例子展示了如何使用超媒体来增强资源的连通性。很多人在设计RESTful架构时,使用很多时间来寻找漂亮的URI,而忽略了超媒体。所以,应该多花一些时间来给资源的表述提供链接,而不是专注于资源的CRUD”

  2. 5 状态的转移

  有了上面的铺垫,再讨论REST里边的状态转移就会很容易理解了。 不过,我们先来讨论一下REST原则中的无状态通信原则。初看一下,好像自相矛盾了,既然无状态,何来状态转移一说?

  其实,这里说的无状态通信原则,并不是说客户端应用不能有状态,而是指服务端不应该保存客户端状态。

  2. 5.1 应用状态与资源状态

  实际上,状态应该区分应用状态和资源状态,客户端负责维护应用状态,而服务端维护资源状态。 客户端与服务端的交互必须是无状态的,并在每一次请求中包含处理该请求所需的一切信息。 服务端不需要在请求间保留应用状态,只有在接受到实际请求的时候,服务端才会关注应用状态。 这种无状态通信原则,使得服务端和中介能够理解独立的请求和响应。 在多次请求中,同一客户端也不再需要依赖于同一服务器,方便实现高可扩展和高可用性的服务端。

  但有时候我们会做出违反无状态通信原则的设计,例如利用Cookie跟踪某个服务端会话状态,常见的像J2EE里边的JSESSIONID。 这意味着,浏览器随各次请求发出去的Cookie是被用于构建会话状态的。 当然,如果Cookie保存的是一些服务器不依赖于会话状态即可验证的信息(比如认证令牌),这样的Cookie也是符合REST原则的。

  2. 5.2 应用状态的转移

  状态转移到这里已经很好理解了,会话状态不是作为资源状态保存在服务端的,而是被客户端作为应用状态进行跟踪的。客户端应用状态在服务端提供的超媒体的指引下发生变迁。服务端通过超媒体告诉客户端当前状态有哪些后续状态可以进入。 这些类似下一页之类的链接起的就是这种推进状态的作用——指引你如何从当前状态进入下一个可能的状态。

 

以上是关于论文结构是啥的主要内容,如果未能解决你的问题,请参考以下文章

论文结构要求

论文解读丨文档结构分析

论文速递COLING 2022 - 联合语言语义和结构嵌入用于知识图补全

带你读AI论文丨用于细粒度分类的Transformer结构—TransFG

3/16 毕业论文管理系统用例流程组件结构图

从神经网络功能预测结构的几何框架 | 网络科学论文速递17篇