02_Tutorial 2: Requests and Responses 请求和响应

1、请求和响应

1、文档

https://www.django-rest-framework.org/tutorial/2-requests-and-responses/

https://q1mi.github.io/Django-REST-framework-documentation/tutorial/2-requests-and-responses_zh/

2、请求对象:request.data

# request.data  # 处理任意数据  适用于‘POST‘,‘PUT‘和‘PATCH‘方法
# request.data可以处理传入的json请求,但它也可以处理其他格式。

3、返回对象:Response

# return Response(data) 渲染成客户端请求的内容类型。

4、status code

from rest_framework import status               # status模块中的每个状态代码
return Response(status=status.HTTP_404_NOT_FOUND)

5、API views

# 基于函数视图, 编写API视图的包装器  等价于  基于类视图的APIView类
@api_view([‘GET‘, ‘POST‘])   
@api_view([‘GET‘, ‘PUT‘, ‘DELETE‘])

REST框架提供了两个可用于编写API视图的包装器(wrappers)。

  1. 用于基于函数视图的@api_view装饰器。
  2. 用于基于类视图的APIView类。

6、可选格式后缀

视图中

def snippet_detail(request, pk, format=None)
def snippet_list(request, format=None)

urls

from rest_framework.urlpatterns import format_suffix_patterns   # 可选的格式后缀
urlpatterns = format_suffix_patterns(urlpatterns)

7、代码

# ## Tutorial 2: Requests and Responses

from rest_framework import status               # status模块中的每个状态代码
from rest_framework.decorators import api_view
from rest_framework.response import Response
from snippets.models import Snippet
from snippets.serializers import SnippetSerializer

@api_view([‘GET‘, ‘POST‘])      # 基于函数视图, 编写API视图的包装器  等价于  基于类视图的APIView类
def snippet_list(request, format=None):     # 可选的格式后缀
    """
    列出所有的snippets,或者创建一个新的snippet。
    """
    if request.method == ‘GET‘:
        snippets = Snippet.objects.all()
        serializer = SnippetSerializer(snippets, many=True)
        return Response(serializer.data)                    # return Response(data) 渲染成客户端请求的内容类型。

    elif request.method == ‘POST‘:
        serializer = SnippetSerializer(data=request.data)   # request.data  # 处理任意数据  适用于‘POST‘,‘PUT‘和‘PATCH‘方法
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)    # status模块中的每个状态代码

        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

@api_view([‘GET‘, ‘PUT‘, ‘DELETE‘])
def snippet_detail(request, pk, format=None):       # 可选的格式后缀
    """
    获取,更新或删除一个snippet实例。
    """
    try:
        snippet = Snippet.objects.get(pk=pk)
    except Snippet.DoesNotExist:
        return Response(status=status.HTTP_404_NOT_FOUND)

    if request.method == ‘GET‘:
        serializer = SnippetSerializer(snippet)
        return Response(serializer.data, status=status.HTTP_200_OK)

    elif request.method == ‘POST‘:
        serializer = SnippetSerializer(snippet, data=request.data)   # request.data可以处理传入的json请求,但它也可以处理其他格式。
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_200_OK)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

    elif request.method == ‘DELETE‘:
        snippet.delete()
        return Response(status=status.HTTP_204_NO_CONTENT)

8、效果

http http://127.0.0.1:8000/snippets/ Accept:application/json  # 请求JSON
http http://127.0.0.1:8000/snippets.json  # JSON后缀
# POST表单数据
http --form POST http://127.0.0.1:8000/snippets/ code="print 123"

原文地址:https://www.cnblogs.com/venicid/p/12009928.html

时间: 2024-11-13 08:59:49

02_Tutorial 2: Requests and Responses 请求和响应的相关文章

API(三)之Requests and Responses

Request objects REST框架引入了Request对象来扩展常规的HttpRequest,并提供更灵活的请求解析.Request对象的核心功能是request.data属性,这与request.POST相似,但对使用Web API更有用. request.POST # Only handles form data. Only works for 'POST' method. request.data # Handles arbitrary data. Works for 'POST

http请求头响应头及状态码列表

HTTP响应头和请求头信息对照表 HTTP请求头提供了关于请求,响应或者其他的发送实体的信息.HTTP的头信息包括通用头.请求头.响应头和实体头四个部分.每个头域由一个域名,冒号(:)和域值三部分组成. 通用头标:即可用于请求,也可用于响应,是作为一个整体而不是特定资源与事务相关联. 请求头标:允许客户端传递关于自身的信息和希望的响应形式. 响应头标:服务器和于传递自身信息的响应. 实体头标:定义被传送资源的信息.即可用于请求,也可用于响应. 根据以上分类的HTTP请求头介绍可以参考此文,本工具

python3+requests:post请求四种传送正文方式(详解)

前言:post请求我在python接口自动化2-发送post请求详解(二)已经讲过一部分了,主要是发送一些较长的数据,还有就是数据比较安全等,可以参考Get,Post请求方式经典详解进行学习一下. 我们要知道post请求四种传送正文方式首先需要先了解一下常见的四种编码方式: HTTP 协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式.常见的四种编码方式如下: ♦1.application/x-www-form-urlencode

http请求与响应全过程

HTTP 无状态性 HTTP 协议是无状态的(stateless).也就是说,同一个客户端第二次访问同一个服务器上的页面时,服务器无法知道这个客户端曾经访问过,服务器也无法分辨不同的客户端.HTTP 的无状态特性简化了服务器的设计,使服务器更容易支持大量并发的HTTP 请求. HTTP 持久连接       HTTP1.0 使用的是非持久连接,主要缺点是客户端必须为每一个待请求的对象建立并维护一个新的连接,即每请求一个文档就要有两倍RTT 的开销.因为同一个页面可能存在多个对象,所以非持久连接可

请求和响应。

之前先复习: 1.Servlet: Servlet接口. MyServlet extends HttpServlet. (HttpServlet继承自GenericServlet,GenericServlet实现了Servlet接口.) 2.java web的 servlet技术: Java程序和页面之间的桥梁.Servlet对象放在tomcat web服务器,web容器,servlet容器. 3.调用.当请求出现时,tomcat根据映射路径找到对应的类,创建对应的对象,调用父类写好的servi

初入网络系列笔记(4)HTTP请求和响应

一.借鉴说明,本博文借鉴以下博文 1.starok,HTTP必知必会,http://www.cnblogs.com/starstone/p/4890409.html 2.CareySon,HTTP协议漫谈,http://www.cnblogs.com/CareySon/archive/2012/04/27/HTTP-Protocol.html 3.逖靖寒,浅析HTTP协议,http://www.cnblogs.com/gpcuster/archive/2009/05/25/1488749.htm

HTTP/NSURLConnection(请求、响应)、http响应状态码大全

一.网络基础 1.基本概念> 为什么要学习网络编程在移动互联网时代,移动应用的特征有几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图只有通过网络跟外界进行数据交互.数据更新,应用才能保持新鲜.活力如果没有了网络,也就缺少了数据变化,无论外观多么华丽,终将变成一潭死水 移动网络应用 = 良好的UI + 良好的用户体验 + 实时更新的数据新闻:网易新闻.新浪新闻.搜狐新闻.腾讯新闻视频:优酷.百度视频.搜狐视频.爱奇艺视频音乐:QQ音乐.百度音乐.酷狗音乐.酷我音乐LBS:百度地

[IBM]掌握Ajax,Ajax中的高级请求和响应

掌握 Ajax, Ajax 中的高级请求和响应 http://www.ibm.com/developerworks/cn/xml/wa-ajaxintro1.html http://www.ibm.com/developerworks/cn/xml/wa-ajaxintro2/ http://www.ibm.com/developerworks/cn/xml/wa-ajaxintro3/ dynaTrace Ajax:前端性能分析利器 http://www.ibm.com/developerwo

JSP内置对象——九大内置对象简介与四种作用域范围以及Web程序的请求和响应模式

最近在学习JSP相关基础知识,我们都知道JSP当中存在一组不使用new关键字就可以在脚本和表达式中使用的对象,在Web开发中经常使用.为了能更好的理解这些对象,在此对JSP内置对象作一些归纳. 目录: JSP内置对象——九大内置对象简介与四种作用域范围以及Web程序的请求和响应模式 JSP内置对象——out(待更新) JSP内置对象——request/response(待更新) JSP内置对象——session(待更新) JSP内置对象——application(待更新) JSP内置对象——其他