微信小程序开发从入门到实战 课件 第5、6章 页面设计与样式设计、数据交互与接口调用_第1页
微信小程序开发从入门到实战 课件 第5、6章 页面设计与样式设计、数据交互与接口调用_第2页
微信小程序开发从入门到实战 课件 第5、6章 页面设计与样式设计、数据交互与接口调用_第3页
微信小程序开发从入门到实战 课件 第5、6章 页面设计与样式设计、数据交互与接口调用_第4页
微信小程序开发从入门到实战 课件 第5、6章 页面设计与样式设计、数据交互与接口调用_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五章

页面设计与样式设计目录5.1页面布局5.2WXSS样式基础5.3响应式设计5.1页面布局Part01页面布局是指在小程序中组织和排列UI元素的过程,涉及容器、网格、定位等多个方面。01‌页面布局的基本原则包括盒子模型、块级元素与行内元素以及浮动与定位。025.1页面布局盒子模型由内容、内边距、边框和外边距组成,对padding、border和margin可以进一步细化为上、下、左、右4个部分5.1.1盒子模型图5-1-1盒子模型结构图5-1-2wxss中对padding、border、margin设置Flex布局是flexibleBox的缩写,意为“弹性布局”,用来为盒状模型提供最大的灵活性,任何容器都可以指定为flex布局,是目前最流行的布局模式,它能轻松应对各种复杂的界面排列需求Flex布局具备任意方向的伸缩,可以向左,向右,向下,向上伸缩02015.1.2Flex布局flex属性flex-direction:设置主轴的方向justify-content:设置主轴上的子元素排列方式flex-wrap:设置子元素是否换行align-content:设置侧轴上的子元素的排列方式(多行)align-items:设置侧轴上的子元素排列方式(单行)flex-flow:复合属性,相当于同时设置了flex-direction和flex-wrap5.1.2Flex布局完成如左图所示的界面步骤1:新建一个项目,输入项目名称等信息步骤2:打开index.wxml页面,清空此页面之前的内容,添加wxml代码步骤3:打开index.wxss文件,清空此页面之前定义的样式代码,定义一个样式命名为“boxcontainer”,通过flex控制<view>容器中的元素排列方向。display:flex表示使用flex弹性布局模式,flex-direction:row表示弹性盒子的元素排列方式按照横向方向放置,justify-content:flex-start表示主轴起点对齐。在index.wxml文件的第一个盒子<view>组件应用此样式class=boxcontainer之后,可以看到盒子里的3个元素由原来竖向变成横向方式展示步骤4:在index.wxss文件中,继续定义控制容器中元素的样式,设置容器中的元素的宽、高样式名称为“shape”,设置3个元素背景颜色的样式分别为“bg_red”“bg_yellow”“bg_green”。这样把样式应用到index.wxml文件后,盒子中3个元素的背景颜色、元素大小效果都展示出来任务1:结合样式,采用flex布局小程序界面。index.wxml代码如下图所示index.wxss代码如右图所示小程序代码WXSSGrid布局是一种强大的布局系统,适用于创建二维网格布局,适合展示行列对齐的内容。Grid布局,通过设置grid-template-columns和grid-template-rows属性,可以定义网格的列数和行数,以及每列和每行的宽度和高度。5.1.3.Grid布局采用grid布局,设计小程序样式index.wxml代码设计①创建网格容器

②定义网格项5.1.4Position定位Position定位常用于实现特定元素的绝对或相对定位,适用于弹窗、悬浮按钮等场景。position属性1.static:默认属性,元素框正常生成,生成一个矩形框,作为文档流的一部分,就是说按照顺序进行排列;2.relative(相对):相对定位是元素相对于其正常位置进行定位。这意味着,即使设置了“position:relative;”,元素仍会保持在流中的原始位置,然后通过“left”,“right”,“top”,“bottom”属性来调整它的位置。3.absolute(绝对):绝对定位则与相对定位不同,它使元素脱离了正常的文档流,不再保留其原有位置的空间。元素的位置是相对于最近的已定位祖先元素(具有“position”属性且不为“static”的元素),如果找不到这样的祖先,则相对于“body”元素定位。4.fixed(固定):脱离文档流,不保留他的位置,从文档流中删除,设置偏移量时相对于视窗本身偏移。任务2:创建一个覆盖全屏的半透明遮罩层及其中心弹出的对话框。

本任务含有两个块级元素,一个类名为content块级元素,用于显示主要内容;另一个类名为overlay块级元素,用作遮罩层,包含一个类名为popup子元素,为显示在遮罩层之上的弹出框。通过样式定义,设置主要内容、遮罩层和弹出框的堆叠顺序及所处位置,创建了一个带有半透明遮罩层的弹出框界面,弹出框位于页面的中心位置,显示在遮罩层之上。这种布局常用于创建模态对话框或弹出提示。任务2:创建一个覆盖全屏的半透明遮罩层及其中心弹出的对话框。WXSS样式基础Part02WXSS概念WXSS全称为WechatStyleSheet,是微信小程序特有用来控制页面的一种样式表语言,是用于定义界面元素外观的重要部分。WXSS样式与CSS不同在于:1、尺度单位不同:WXSS中使用rpx作为尺度单位,可以根据屏幕宽度进行自适应,而CSS中使用px作为尺度单位。2、部分属性不支持:由于小程序需要考虑性能和安全性,一些浏览器中支持的CSS属性在WXSS中是不被支持的。3、样式导入方式不同:WXSS中无法使用@import导入外部样式文件,只能在每个页面的<style>标签内书写样式。1.rpx单位rpx(responsivepixel)是微信小程序中特有的长度单位,专门用于实现自适应布局的尺寸单位,全称为ResponsivePixel(响应式像素)。5.2.1尺寸单位表5-2-1rpx与px单位换算关系设备rpx换算px(屏幕宽度/750)px换算rpx(750/屏幕宽度)iPhone51rpx≈0.42px1px≈2.34rpxiPhone61rpx=0.5px1px=2rpxiPhone14ProMax1rpx≈0.573px1px≈1.74rpx2.rem单位rem(rootem)单位与rpx的用法类似,WXSS规定屏幕宽度为20rem。5.2.1尺寸单位表5-2-2rem与px单位换算关系设备rem换算px(屏幕宽度/20)px换算rem(20/屏幕宽度)iPhone51rem=15.75px1px≈0.0635remiPhone61rem=18.75px1px≈0.053remiPhone14ProMax1rem=21.5px1px≈0.0465rem1、动态样式绑定利用微信小程序的数据绑定特性,可以根据数据动态改变样式,实现简单的响应式效果。例如:homeOutObj.color是js文件里面设置的颜色,可以根据用户操作改变值,达到动态渲染效果。5.2.2样式设计5.2.2样式设计2、媒体查询在微信小程序中,媒体查询主要通过在WXSS(WeiXinStyleSheets)文件中使用@media规则来实现。与Web开发中的CSS媒体查询类似,小程序也支持根据设备的屏幕特性来应用不同的样式。常用于设置不同屏幕尺寸的样式适配。比如,使用@media(max-device-width:350px),来为屏幕宽度小于等于350px设置特定的样式,使用@media(min-width:414px)来为屏幕宽度为414px设置样式,使用@media(max-width:375px)来为屏幕宽度为375px设置样式。这样,小程序页面就可以根据屏幕尺寸变化,自动应用不同的样式,使得小程序在各种设备上都能有良好的显示效果。5.2.2样式设计5.2.2样式设计响应式设计Part03

响应式设计是一种根据屏幕尺寸、方向等动态调整布局,让页面和应用能够在不同设备上以最佳方式呈现的设计方法。无论是在桌面电脑、平板还是手机上访问页面或应用,响应式设计都能够自动调整布局和内容以适应不同的屏幕尺寸和分辨率。响应式设计1、自适应原理:微信小程序的自适应设计通常以iPhone6为标准,其屏幕宽度为375px。自适应的计算公式为:(屏幕宽度/750)*(元素在iPhone6上显示的px高度或宽度)*2,以此来适配不同屏幕的设备。2、使用rpx单位:微信小程序推荐使用rpx(responsivepixel)作为动态像素单位,750rpx等于375px等于750物理屏幕像素点。1rpx等于屏幕宽度除以750的结果,这样在不同设备上rpx与px的转换是不相同的,但是宽度的rpx是固定的,因此可以使用rpx作为单位来设置布局的宽高。3、弹性布局和媒体查询:小程序中可以使用弹性布局(flexbox)和CSS的媒体查询功能,根据屏幕尺寸和设备特性应用不同的样式规则,实现不同设备上的自适应布局。4、组件化开发:采用组件化开发模式,将页面划分为多个可复用的组件,实现页面的自适应。响应式设计应该遵循的原则5、动态计算和调整布局:通过编程动态计算元素的尺寸和布局,可以根据不同的条件和屏幕尺寸来调整布局。6、测试和调试:在不同尺寸和分辨率的设备上进行测试和调试,确保布局在各种屏幕上正常显示和适应。7、栅格系统:使用栅格系统进行页面设计,元素宽高可使用百分比进行呈现,提高不同分辨率下页面布局的一致性与可复用性。8、响应策略:制定小程序页面的响应策略,通过合理的设计方案配合规范的技术来制定的变化策略,保持小程序在任何一个尺寸的屏幕上的使用体验合理与连贯。响应式设计应该遵循的原则任务3:制作一个简单的微信小程序响应式设计案例步骤1:新建一个项目,输入项目名称等信息,如图5-3-1所示步骤2:打开index.wxml文件,清空页面的原始代码,如下所示代码。wx:for是微信小程序中用于循环渲染列表的指令,{{cards}}是绑定到页面数据中的cards数组。wx:key="index"是为了提高列表渲染性能而设置的,index代表数组元素的索引,当列表内容变化时,微信可以根据key快速定位需要更新的元素。src="{{item.image}}"是动态绑定图片的URL,item代表当前遍历到的cards数组的元素,item.image就是这个元素的image属性,即图片的URL。步骤3:打开index.wxss文件,清空此页面之前定义的样式代码,定义一个样式命名为“container”整个卡片列表的外层容器,设置一个弹性布局,并且设置了flex-wrap:wrap;,这样当屏幕宽度不足以放下所有卡片时,卡片会自动换行。.card的宽度设置为100%,并且有一个最大宽度限制max-width:300rpx;,这样在小屏幕上卡片会占据全部宽度,而在大屏幕上则最多只占据300rpx的宽度,从而实现响应式效果。关键代码如后图步骤4:在index.js文件中,清空原始代码,添加如下代码,目的是定义一个页面,该页面包含一个名为cards的数据列表,用于存储卡片的信息。这些卡片信息用于在页面的WXML模板定义的{{cards}},去动态渲染一系列卡片,每个卡片包含显示一张图片、一个标题和一段描述。本章节对微信小程序中使用样式和布局进行详细介绍。在WXSS中为了适配不同尺寸的屏幕使用了rpx单位,WXSS还支持部分CSS的布局属性,并且对盒子模型、Flex布局、响应式设计等做了简单介绍。通过本章节的学习,应该已经掌握了WXSS的基本使用方法,以及如何利用各种布局组件来构建美观且功能丰富的界面。在实际开发过程中,请不断尝试新的样式和布局技巧,结合项目需求灵活运用,以达到最佳的视觉效果和用户体验。样式和布局的设计是一个持续迭代和完善的过程,随着项目的推进和技术的进步,可能会发现更多创新的方法来改进现有设计。始终保持好奇心和探索精神,不断提升自己的技术水平。总结:数据交互与接口调用目录发送和接收HTTP请求RESTfulAPI设计和调用Part01发送和接收HTTP请求6.1.1HTTP协议基础

HTTP(HyperTextTransferProtocol,超文本传输协议)是互联网上应用最广泛的一种网络协议,用于在服务器与本地浏览器之间传输超文本。HTTP是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式。HTTP是一种应用层协议,用于在Web上传输超文本和其他内容。在微信小程序中,我们主要使用wx.request方法来发送HTTP请求。6.1发送和接收HTTP请求6.1.1HTTP协议基础

HTTP请求方法HTTP请求方法,也被称为“动作”或“命令”,用于告诉服务器你想对资源执行什么操作。以下是几种常见的HTTP请求方法:GET:请求从指定的资源获取数据。GET请求通常不产生副作用(即不会改变服务器上的数据)。GET请求的参数通常附加在URL后面,形成查询字符串。POST:向指定的资源提交数据,通常用于提交表单数据或上传文件。POST请求可能会导致服务器上的数据发生变化。PUT:向指定资源位置上传其最新内容。PUT请求通常用于更新资源,如果资源不存在,则可能会创建新资源(这取决于服务器的具体实现)。DELETE:请求服务器删除指定的资源。DELETE请求通常用于删除服务器上的数据。其他方法:HTTP协议还定义了其他请求方法,如HEAD(获取资源的元信息而不返回资源本身)、OPTIONS(描述目标资源的通信选项)、PATCH(对资源进行部分更新)等。6.1发送和接收HTTP请求6.1.1HTTP协议基础HTTP状态码解析HTTP状态码是服务器用来告诉客户端请求结果的数字代码。状态码分为五类,分别表示不同的响应类型:1xx(信息性状态码):表示请求已被接收,需要继续处理。例如,100Continue表示客户端可以继续发送请求体。2xx(成功状态码):表示请求已成功被服务器接收、理解、并接受。例如,200OK表示请求成功,服务器返回了请求的网页。3xx(重定向状态码):表示需要客户端采取进一步的操作才能完成请求。例如,301MovedPermanently表示请求的资源已永久移动到新的URL。4xx(客户端错误状态码):表示请求包含语法错误或无法完成请求。例如,404NotFound表示服务器无法根据客户端的请求找到资源(网页)。5xx(服务器错误状态码):表示服务器在处理请求的过程中发生了错误。例如,500InternalServerError表示服务器内部错误,无法完成请求。6.1发送和接收HTTP请求6.1.1HTTP协议基础请求头与响应头的作用HTTP请求头和响应头都是一系列的键值对,用于在HTTP请求和响应中传递额外的信息。请求头:客户端在发送请求时,可以在请求头中包含一些额外的信息,如User-Agent(客户端类型)、Accept(客户端接受的响应内容类型)、Authorization(认证信息)等。这些信息有助于服务器理解客户端的请求,并做出相应的响应。响应头:服务器在返回响应时,可以在响应头中包含一些额外的信息,如Content-Type(响应内容类型)、Content-Length(响应内容长度)、Set-Cookie(设置客户端的Cookie)等。这些信息有助于客户端理解服务器的响应,并正确处理返回的数据。6.1发送和接收HTTP请求6.1.2微信小程序中的HTTP请求wx.request方法详解

wx.request是微信小程序中用于发起HTTP请求的API。它允许你向服务器发送请求,并接收服务器的响应。以下是wx.request方法的详细参数说明:url:String类型,开发者服务器接口地址。Method:

String类型,HTTP请求方法,默认为GET,有效值:GET/POST/OPTIONS/PUT/DELETE等。data:Object/String/ArrayBuffer类型,请求的参数。如果是GET请求,会将数据转换为query字符串附加在url后面;如果是POST请求,会将数据作为请求体发送给服务器。当method为GET时,data应为字符串类型,其它情况为对象类型。数据会进行JSON序列化。6.1发送和接收HTTP请求6.1.2微信小程序中的HTTP请求wx.request方法详解

wx.request是微信小程序中用于发起HTTP请求的API。它允许你向服务器发送请求,并接收服务器的响应。以下是wx.request方法的详细参数说明:header:Object类型,设置请求的头部信息。例如,可以设置Content-Type为application/json来告诉服务器你发送的是JSON格式的数据。success:Function类型,接口调用成功的回调函数。该函数会接收一个参数res,其中包含了服务器返回的数据和状态信息。fail:Function类型,接口调用失败的回调函数。该函数会接收一个参数err,包含了调用失败的错误信息。complete:Function类型,接口调用结束的回调函数(调用成功、失败都会执行)。该函数也会接收一个参数,与success和fail的参数相同,但可以根据参数的状态码来区分是成功还是失败。6.1发送和接收HTTP请求6.1.2微信小程序中的HTTP请求请求参数的配置与传递

在使用wx.request发起HTTP请求时,你需要配置请求的URL、方法、参数、头部信息等。以下是一个配置和传递请求参数的部分代码示例。wx.request({url:'/api/data',//请求的URLmethod:'GET',//请求方法,这里使用GETdata:{key1:'value1',//如果是GET请求,这里的参数会被附加到URL后面key2:'value2'},header:{'Content-Type':'application/json'//设置请求头信息,这里设置为JSON格式//注意:对于GET请求,通常不需要设置Content-Type,因为请求体为空},6.1发送和接收HTTP请求6.1.2微信小程序中的HTTP请求请求参数的配置与传递

在使用wx.request发起HTTP请求时,你需要配置请求的URL、方法、参数、头部信息等。以下是一个配置和传递请求参数的部分代码示例。success:function(res){//请求成功的回调函数console.log(res.data);//输出服务器返回的数据},fail:function(err){//请求失败的回调函数console.error(err);//输出错误信息}});6.1发送和接收HTTP请求6.1.2微信小程序中的HTTP请求响应数据的处理与解析

当服务器返回响应时,wx.request的success回调函数会被调用,并接收一个包含响应数据的参数res。res对象包含以下属性:statusCode:HTTP状态码,表示请求是否成功。header:响应头信息,包含了服务器返回的一些额外信息。data:服务器返回的数据。如果服务器返回的是JSON格式的数据,你可以直接将其当作对象来处理;如果是其他格式的数据(如文本、XML等),你需要根据具体情况进行解析。6.1发送和接收HTTP请求6.1.2微信小程序中的HTTP请求以下是一个处理响应数据的部分代码示例。wx.request({//...(其他配置参数与上面相同)success:function(res){if(res.statusCode===200){//判断请求是否成功try{vardata=JSON.parse(res.data);//解析JSON格式的数据//对数据进行处理,例如更新页面状态、显示数据等}catch(e){

console.error('解析JSON数据失败:',e);//处理解析错误}6.1发送和接收HTTP请求6.1.2微信小程序中的HTTP请求以下是一个处理响应数据的部分代码示例。}else{

console.error('请求失败,状态码:',res.statusCode);//处理请求失败的情况}},fail:function(err){//请求失败的回调函数(例如网络错误等)

console.error('请求失败:',err);}});6.1发送和接收HTTP请求6.1.3请求的封装与复用封装HTTP请求函数在开发微信小程序时,为了提高代码的可维护性和复用性,我们通常会对HTTP请求进行封装。封装后的HTTP请求函数可以简化代码,避免重复编写相同的请求逻辑,并方便后续的统一管理和维护。封装HTTP请求函数通常涉及以下几个步骤:定义请求函数:创建一个函数,用于发送HTTP请求。该函数可以接收请求配置对象作为参数,包括URL、方法、参数、头部信息等。调用wx.request:在函数内部调用wx.request方法,将请求配置传递给它,并处理响应数据。返回Promise:为了使函数更加灵活和易于使用,我们可以将函数返回一个Promise对象。这样,调用者可以使用then和catch方法来处理成功和失败的响应。6.1发送和接收HTTP请求6.1.3请求的封装与复用配置请求默认值与拦截器

在封装HTTP请求函数时,我们还可以配置请求的默认值和拦截器,以进一步简化代码和提高复用性。配置请求默认值:我们可以定义一个包含默认请求配置的对象,并在每次发送请求时将其与传入的请求配置合并。这样可以避免在每次请求中都重复配置相同的参数(如基础URL、头部信息等)。配置拦截器:拦截器允许我们在请求发送之前或响应接收之后对其进行处理。这可以用于添加全局的请求头部、处理错误响应、统一格式化响应数据等。6.1发送和接收HTTP请求6.1.3请求的封装与复用错误处理与重试机制

在发送HTTP请求时,我们可能会遇到各种错误情况,如网络错误、服务器错误等。为了增强应用的健壮性和用户体验,我们需要对错误进行处理,并根据需要实现重试机制。错误处理:在封装HTTP请求函数时,我们可以使用try...catch语句或Promise的catch方法来捕获和处理错误。对于不同类型的错误(如网络错误、服务器错误等),我们可以给出不同的提示或处理措施。重试机制:对于某些可能由于临时网络问题或服务器负载过高而导致的失败请求,我们可以实现重试机制。这可以通过在捕获到错误后延迟一段时间再次发送请求来实现。需要注意的是,为了避免无限循环的重试,我们应该设置重试次数上限。6.1发送和接收HTTP请求6.1.4实战:发送HTTP请求获取数据示例接口的选择与调用

首先,我们需要选择一个示例接口来进行测试。这里我们可以使用一个公开的API接口,比如JSONPlaceholder提供的假数据API(/)。这个API提供了很多假数据,非常适合用于学习和测试。

6.1发送和接收HTTP请求6.1.4实战:发送HTTP请求获取数据示例接口的选择与调用

在开始使用JSONPlaceholder之前,我们需要先把它配置到微信小程序的管理后台。首先我们用浏览器登录微信小程序的管理后台,依次点击左侧的“管理”,“开发管理”,在打开的右侧页面拖动网页,找到“服务器域名”的部分,点击后面的“修改”,将加入到request合法域名中,然后保存修改。

6.1发送和接收HTTP请求6.1.4实战:发送HTTP请求获取数据示例接口的选择与调用

然后进入微信开发者工具,点击右上角的详情按钮,选择项目配置,查看reques合法域名里是否加上了我们刚才配置的JSONPlaceholder的地址,(这里注意必须在小程序id那里必须修改为注册的id,如果是开发时候无id,随机生成的就不行,无法同步项目信息)。如果域名信息显示未设置,可以点击右侧的刷新按钮重新从微信小程序的管理后台加载一下即可。

6.1发送和接收HTTP请求6.1.4实战:发送HTTP请求获取数据示例接口的选择与调用具体详细代码请参照课本,代码完成后,点击编译按钮,在左侧的页面即可显示从/users加载到的所有的用户的信息。如右图所示。

6.1发送和接收HTTP请求RESTfulAPI设计和调用Part026.2.1RESTfulAPI概述

RESTful架构风格介绍REST,即RepresentationalStateTransfer(表现层状态转移),是一种用于构建可扩展、可维护的Web服务的架构风格。它不是具体的协议或标准,而是定义了一组约束和最佳实践,旨在使系统更容易相互通信。RESTfulAPI则是基于这种架构风格的Web服务接口,它使用HTTP协议与客户端进行通信,并通过标准的HTTP方法(如GET、POST、PUT、DELETE等)来操作资源。6.2RESTfulAPI设计和调用6.2.1RESTfulAPI概述RESTful架构风格强调以下几点:客户端-服务器:关注点分离,将用户界面问题与数据存储问题分开,提高用户界面在多个平台上的可移植性,并通过简化服务器组件来提高可扩展性。无状态:服务器不保存任何客户端的上下文信息,每次请求都必须包含所有必要的信息,以便服务器能够理解并处理请求。可缓存:某些请求的结果可以被缓存,以减少服务器的负载和提高响应速度。统一接口:使用统一的接口来简化客户端与服务器之间的交互,包括资源标识符、资源操作和响应消息的格式。分层系统:允许架构由分层层组成,通过约束组件行为,使每个组件无法“看到”它们与之交互的直接层之外。按需代码(可选):允许通过下载和执行小程序或脚本形式的代码来扩展客户端功能。6.2RESTfulAPI设计和调用6.2.1RESTfulAPI概述

RESTfulAPI的设计原则基于资源:将数据和功能抽象成资源,并通过URI来唯一标识资源。例如,一个用户资源可以通过URL“/users/{id}”来访问,其中“{id}”表示该用户的唯一标识符。使用HTTP动词:使用HTTP动词来表示对资源的操作,如GET(获取资源)、POST(创建资源)、PUT(更新资源)和DELETE(删除资源)等。无状态:每个请求都包含足够的信息来完成请求,服务器不需要保存任何上下文信息。轻量级数据交换格式:采用如JSON、XML等轻量级的数据交换格式,这些格式易于解析且传输效率高。统一接口:使用统一的接口来简化客户端与服务器之间的交互。可缓存性:客户端可以缓存响应,以提高性能和减少网络流量。可扩展性:通过增加新的资源或操作,可以轻松扩展API功能。资源与URI的设计。6.2RESTfulAPI设计和调用6.2.1RESTfulAPI概述

资源与URI的设计

在RESTfulAPI中,资源是应用程序中可访问的一切事物,如用户、产品、订单等。每个资源都有一个唯一的标识符,称为URI(统一资源标识符)。通过URI,可以定位和访问资源。6.2RESTfulAPI设计和调用6.2.1RESTfulAPI概述设计良好的URI应遵循以下原则:简洁性:URI应简洁明了,易于理解和记忆。可读性:URI应具有可读性,能够清晰地表达资源的类型和层次结构。唯一性:每个资源都应有一个唯一的URI,以确保可以准确地定位和访问资源。规范性:URI应遵循一定的命名规范,以提高可读性和管理效率。例如,可以使用连字符(-)来提高URI的可读性,避免使用下划线(_)等字符。6.2RESTfulAPI设计和调用6.2.2RESTfulAPI的调用实践GET请求获取资源列表与详情GET请求用于从服务器检索资源。在RESTfulAPI中,通常用于获取资源的列表或单个资源的详情。6.2RESTfulAPI设计和调用1.获取资源列表请求示例:GET/api/v1/resources响应示例(JSON格式):[{"id":1,"name":"Resource1","description":"Thisisresource1."},{"id":2,"name":"Resource2","description":"Thisisresource2."}]6.2.2RESTfulAPI的调用实践2.获取单个资源详情请求示例:GET/api/v1/resources/1响应示例(JSON格式):{"id":1,"name":"Resource1","description":"Thisisresource1.","additional_info":"Moredetailsaboutresource1."}6.2RESTfulAPI设计和调用6.2.2RESTfulAPI的调用实践POST请求创建新资源POST请求用于向服务器发送数据以创建新资源。请求示例:POST/api/v1/resourcesContent-Type:application/json{"name":"NewResource","description":"Thisisanewresource."}6.2RESTfulAPI设计和调用响应示例(JSON格式,通常包含新创建资源的ID或完整信息):{"id":3,"name":"NewResource","description":"Thisisanewresource."}6.2.2RESTfulAPI的调用实践PUT请求更新资源PUT请求用于更新服务器上现有的资源。通常,你需要提供要更新的资源的完整信息,包括其ID。请求示例:PUT/api/v1/resources/1Content-Type:application/json{"id":1,"name":"UpdatedResource","description":"Thisresourcehasbeenupdated."}6.2RESTfulAPI设计和调用响应示例(JSON格式,通常包含更新后的资源信息):{"id":1,"name":"UpdatedResource","description":"Thisresourcehasbeenupdated."}6.2.2RESTfulAPI的调用实践DELETE请求删除资源DELETE请求用于从服务器上删除指定的资源。请求示例:DELETE/api/v1/resources/1响应示例(通常是一个空响应体或简单的确认消息):{"message":"Resourcedeletedsuccessfully."}或者Status:204NoContent6.2RESTfulAPI设计和调用6.2.2RESTfulAPI的调用实践总结一下:GET请求:用于获取资源列表或单个资源的详情。POST请求:用于创建新资源。PUT请求:用于更新现有资源。DELETE请求:用于删除指定资源。

这些HTTP方法共同构成了RESTfulAPI的核心,使得客户端可以与服务器进行高效的交互。在实际开发中,确保你的API设计遵循RESTful原则,可以提高系统的可维护性和可扩展性。6.2RESTfulAPI设计和调用6.2.3API的安全与认证

在构建和维护API时,确保数据的安全性和身份验证是至关重要的。下面简单介绍一下API安全与认证机制,包括API密钥与令牌的使用、OAuth2.0认证流程以及HTTPS加密保障数据安全。API密钥与令牌的使用

在API的安全与认证机制中,API密钥(APIKey)与令牌(Token)扮演着至关重要的角色。它们作为客户端与服务器之间通信的身份验证凭证,确保了API的合法访问和数据的安全性。6.2RESTfulAPI设计和调用6.2.3API的安全与认证API密钥:API密钥是一种预共享的、静态的认证方式。它通常由服务器生成,并分配给客户端用于后续请求的认证。客户端在每次请求API时,都需要在请求头或参数中携带API密钥。服务器通过验证API密钥的有效性来确认请求的合法性。然而,由于API密钥是静态的,一旦泄露,可能会被恶意用户滥用。因此,需要定期更换API密钥,并限制其使用范围,以降低安全风险。

下面是一个API密钥示例:在HTTP请求头中使用API密钥进行身份验证GET/api/v1/resourcesHTTP/1.1Host:Authorization:ApiKey1234567890abcdef在这个例子中,ApiKey

是自定义的认证头名称,1234567890abcdef

是API密钥。6.2RESTfulAPI设计和调用6.2.3API的安全与认证令牌:

与API密钥不同,令牌通常是动态生成的,并且具有较短的有效期。客户端在成功通过身份验证后,服务器会返回一个令牌作为后续请求的认证凭证。客户端需要在每个请求中携带令牌,服务器则通过验证令牌的有效性来确认请求的合法性。由于令牌具有时效性,即使泄露,其影响也有限。此外,令牌还可以与用户的身份和权限相关联,实现更细粒度的访问控制。令牌示例:在HTTP请求头中使用令牌(如JWT)进行身份验证:GET/api/v1/resourcesHTTP/1.1Host:Authorization:BearereyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...6.2RESTfulAPI设计和调用6.2.3API的安全与认证OAuth2.0认证流程OAuth2.0是一种广泛应用的授权框架,它允许客户端通过资源所有者(通常是用户)的授权,访问受保护的资源。下面通过一个简化的示例,说明如何通过OAuth2.0获取访问令牌。6.2RESTfulAPI设计和调用6.2.3API的安全与认证客户端重定向用户到授权服务器的授权页面请求授权(假设使用授权码流程):GET/oauth/authorize?response_type=code&client_id=CLIENT_ID&redirect_uri=/callback&scope=readwrite2.用户授权:用户在授权页面上输入凭据并选择授权。3.授权服务器颁发授权码(通过重定向到客户端的回调URL):GET/callback?code=AUTHORIZATION_CODE&state=STATE4.客户端使用授权码请求访问令牌:POST/oauth/tokenContent-Type:application/x-www-form-urlencodedgrant_type=authorization_code&code=AUTHORIZATION_CODE&redirect_uri=/callback&client_id=CLIENT_ID&client_secret=CLIENT_SECRET6.2RESTfulAPI设计和调用6.2.3API的安全与认证5.授权服务器颁发访问令牌:{"access_token":"ACCESS_TOKEN","token_type":"Bearer","expires_in":3600,"refresh_token":"REFRESH_TOKEN","scope":"readwrite"}6.客户端使用访问令牌访问资源:GET/api/v1/resourcesHTTP/1.1Host:Authorization:BearerACCESS_TOKEN6.2RESTfulAPI设计和调用6.2.3API的安全与认证HTTPS加密保障数据安全HTTPS(HyperTextTransferProtocolSecure)是一种安全的网络通信协议,它在HTTP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论