java后端使用rest_前后端程序员都要了解和使用REST API

如果你考虑从互联网上的其他来源(例如Github)获取数据,那么你很有可能遇到“REST API”这个术语。但什么是REST API?它能为你做什么?你如何使用它?

da4d157a646637c30b27b607632be029.png

什么是REST API

假设你正试图在Youtube上找到关于编程的视频,你打开Youtube,在搜索栏中键入“编程”,按回车键,然后你会看到一个关于编程的视频列表。REST API以类似的方式工作,你搜索某些内容,然后从你要求的服务中获取结果列表。

f97c697c840b5022a2e7536b8257b76f.png

一个API是应用程序编程接口,它是一组允许程序相互通信的规则,开发人员在服务器上创建API,并允许客户端与之通信。

REST确定API的外观,它是开发人员在创建API时遵循的一组规则,其中一条规则规定,当你链接到特定URL时,你应该能够获取一段数据(也称为资源)。

每个URL都被称为请求,而发送回给你的数据称为响应。

我们常见API类型有POST,PUT,PATCH,DELETE等方式,那么我们如何判断这些类型返回状态呢?我们就用上HTTP状态码。

35098e47dc67e5132cfa2092c43ace7f.png

HTTP状态代码和错误消息

你之前收到的一些消息,如“需要身份验证”和“解析JSON的问题”是错误消息,它们仅在您的请求出现问题时出现。HTTP状态代码可让你快速了解响应的状态,范围从100+到500+,通常,数字遵循以下规则:200+表示请求已成功。

300+表示请求被重定向到另一个URL

400+是指从客户端发起的错误已经发生

500+指从服务器发错误已经发生

API不仅可以让我们开发者可以分开独立开发,还提高了开发速度,API涉及前后端技术,是目前开发流行方式。

(1)项目简介 这个demo很简单,是一个记账小工程。用户可以注册、修改密码,可以记账、查找记账记录等。 (2)接口介绍 用户操作相关: post /users 用户注册 post /users/login 用户登录(这里我把login当成一个名词) put /users/pwd?userId=xxx&sign=xxx 用户修改密码 delete /users?uerId=xxx&sign=xxx 删除用户 记账记录操作相关: post /records?userId=xxx&sign=xxx 增加一条记账记录 get /records/:id?userId=xxx&sign=xxx 查询一条记账记录详情 put /records/:id?userId=xxx&sign=xxx 修改一条记账记录详情 get /records?查询参数&userId=xxx&sign=xxx 分页查询记账记录 delete /records/:id?userId=xxx&sign=xxx 删除一条记账记录 其中url中带sign参数的表示该接口需要鉴权,sign必须是url中最后一个参数。具体的鉴权方法是:用户登录后,服务器生成返回一个token,然后客户端要注意保存这个token,需要鉴权的接口加上sign签名,sign=MD5(url+token),这样可以避免直接传token从而泄露了token。这里我觉得接口最好还带一个时间戳参数timestamp,然后可以在服务端比较时间差,从而避免重放攻击。而且这样还有一个好处,就是如果有人截获了我们的请求,他想伪造我们的请求则不得不改时间戳参数(因为我们在服务器端会比较时间),这样一来sign势必会改变,他是无法得知这个sign的。如果我们没有加时间戳参数的话,那么,他截获了请求url,再重发这个请求势必又是一次合法的请求。我在这里为了简单一些,就不加时间戳了,因为这在开发测试阶段实在是太麻烦了。 (3)关于redis和数据库的说明 服务端在用户登录后,生成token,并将token保存到redis中。后面在接口鉴权的时候会取出token计算签名MD5(除sign外的url+token),进行比对。 这个demo搭建了一个redis主从复制,具体可以参考:http://download.csdn.net/detail/zhutulang/9585010 数据库使用mysql,脚本在 src/main/resources/accounting.sql
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值