前后端开发中的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描述
GEThttp://localhost:8000/href/查询所有的数据
GEThttp://localhost:8000/href/1查询name为1的数据
POSThttp://localhost:8000/href/新建数据
PUThttp://localhost:8000/href/更新数据
PATCHhttp://localhost:8000/href/更新数据
DELETEhttp://localhost:8000/href/1删除name为1的数据

这里给出了最基本的操作,虽然有些操作的url相同,但request的方法不同,我们可以通过这里用来区分客户端不同的操作。

API设计风格基本规则

这里只做简单的总结,具体请参考这篇文章——>传送门

  1. 使用名词而不是动词

  2. Get方法只涉及查询,不应当改变数据的状态。

  3. 只有所有资源才使用复数

  4. 使用Http头声明序列化格式

  5. 使用状态码来处理相关的错误

比如下列代码我们可以自己定义,出错的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)
posted @ 2021-02-13 23:36  沃特艾文儿  阅读(8)  评论(0)    收藏  举报  来源