前后端开发中的restful风格
最近在前后端开发的过程中了解到了restful开发风格,在这里学习记录一下
资源的定义
我们将需要进行操作的数据或者资源抽象为URL,通过不同的方法来对资源进行的不同操作,即简单的增删查改。
http://localhost:8000/href/
我们需要的资源可以是图片,文字,音频,数据等等。所以url提供的数据的格式也会不同,比如txt,Json,mp3,jpg等。我们一般使用的形式为json形式。
接口的实现
与对数据库处理对应,我们需要对url实现增删改查的方法。
| 接口方法 | 描述 | 数据库操作 |
|---|---|---|
| GET | 从数据库或者服务器获取数据 | SELECT |
| POST | 新建一个资源 | CREATE |
| PUT | 更新资源(需要完整的数据) | UPDATE |
| PATCH | 更新资源(只需要部分即可) | UPDATE |
| DELETE | 删除资源 | DELETE |
对资源的一般操作
| 方法 | url | 描述 |
|---|---|---|
| GET | http://localhost:8000/href/ | 查询所有的数据 |
| GET | http://localhost:8000/href/1 | 查询name为1的数据 |
| POST | http://localhost:8000/href/ | 新建数据 |
| PUT | http://localhost:8000/href/ | 更新数据 |
| PATCH | http://localhost:8000/href/ | 更新数据 |
| DELETE | http://localhost:8000/href/1 | 删除name为1的数据 |
这里给出了最基本的操作,虽然有些操作的url相同,但request的方法不同,我们可以通过这里用来区分客户端不同的操作。
API设计风格基本规则
这里只做简单的总结,具体请参考这篇文章——>传送门
-
使用名词而不是动词
-
Get方法只涉及查询,不应当改变数据的状态。
-
只有所有资源才使用复数
-
使用Http头声明序列化格式
-
使用状态码来处理相关的错误
比如下列代码我们可以自己定义,出错的code,也可以使用status库来表示出错
def edit_href(self, request, *args, **kwargs):
name = request.data.get('name', None)
if name:
obj = models.Href.objects.filter(name=name).first()
serializer = HrefInfoModelSerializer(instance=obj, data=request.data, partial=True)
if serializer.is_valid():
serializer.save(update_fields=['name', 'id'])
return JsonResponse({
'code': 200,
'msg': '更新成功',
})
else:
return JsonResponse({
'code': 201,
'msg': '更新失败',
})
else:
return Response(status.HTTP_204_NO_CONTENT)

浙公网安备 33010602011771号