zoukankan      html  css  js  c++  java
  • RESTful-API


    作用

    对于同一资源定位(URI),根据method不同,对资源进行不同的操作。


    状态码

    服务器向用户返回的状态码和提示信息,常见的有以下一些(方括号中是该状态码对应的HTTP动词)。

    • 200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。

    • 201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。

    • 202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务)

    • 204 NO CONTENT - [DELETE]:用户删除数据成功。

    • 400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。

    • 401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。

    • 403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。

    • 404 NOT FOUND - [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。

    • 406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。

    • 410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。

    • 422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。

    • 500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。


    django_rest_framework

    通过各种method获取或修改后台数据,直接显示在前端,可以是json等其它格式,替代了以前的ajax去后端获取数据只能返回json,还要写model等步骤。​

    http://www.django-rest-framework.org/tutorial/quickstart/

    安装(具体版本请参考 Django-rest-framework.org)

    1
    2
    3
    pip install djangorestframework
    pip install markdown
    pip install django-filter

    添加项目

    1
    2
    3
    4
    INSTALLED_APPS = [
        .......
        'rest_framework',
    ]

    serializer.py

    1
    2
    3
    4
    5
    6
    from rest_framework import serializers
    from models import UserProfile
    class UserSerializer(serializers.HyperlinkedModelSerializer):
        class Meta:
            model = UserProfile
            fields = ('url', 'name', 'email')

    rest_views.py

    1
    2
    3
    4
    5
    6
    7
    from rest_framework import viewsets
    from models import UserProfile
    from serializer import UserSerializer
     
    class UserViewSet(viewsets.ModelViewSet):
        queryset = UserProfile.objects.all()
        serializer_class = UserSerializer

    总urls.py,把api的全交给rest_urls.py处理

    1
    2
    3
    4
    5
    6
    7
    from django.conf.urls import include
    from asset import rest_urls
     
    urlpatterns = [
        ......
        url(r'^api/', include(rest_urls) ),
    ]

    rest_urls.py

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    from django.conf.urls import url, include
    from rest_framework import routers
    import rest_views
     
    router = routers.DefaultRouter()
    router.register(r'users', rest_views.UserViewSet)
    urlpatterns = [
        url(r'^', include(router.urls)),
        url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
    ]

    浏览器效果



    还能在页面添加数据












  • 相关阅读:
    BZOJ3171: [Tjoi2013]循环格
    Luogu P1850 换教室(期望dp)
    Luogu P3825 [NOI2017]游戏(2-SAT)
    Luogu P3007 [USACO11JAN]大陆议会The Continental Cowngress
    Luogu P2272 [ZJOI2007]最大半连通子图(Tarjan+dp)
    Luogu P3209 [HNOI2010]平面图判定(2-SAT)
    Luogu P4171 [JSOI2010]满汉全席(2-SAT)
    Luogu P4782 【模板】2-SAT 问题(2-SAT)
    Luogu P2845 [USACO15DEC]Switching on the Lights 开关灯(bfs)
    Luogu P4933 大师(dp)
  • 原文地址:https://www.cnblogs.com/daliangtou/p/5447831.html
Copyright © 2011-2022 走看看