美文网首页iOS高质量博客
AFN中的Content-Type与RESTFul简介

AFN中的Content-Type与RESTFul简介

作者: 行如风 | 来源:发表于2017-10-20 13:04 被阅读297次

    前言

    之前的文章我们编写了一个接口. 并且可以使用接口文档请求次接口并且提交时可以带上参数. 在写出django 如何接收和解析参数之前, 需要先介绍一下HTTP提交的参数都有哪些组织形式(也可以叫参数序列化serializer), 其实就是Content-Type字段.

    Content-Type 可以填写哪些内容.

    常见的Content-Type内容

    application/x-www-form-urlencoded
    multipart/form-data
    application/json
    text-plain
    

    AFNetworking中Content-Type字段

    AFN中的请求序列化类:

    1. AFHTTPRequestSerializer
    2. AFJSONRequestSerializer
      也可以叫做表单(form)提交和json提交.

    AFHTTPRequestSerializer

    请求序列化方法

    - (NSURLRequest *)requestBySerializingRequest:(NSURLRequest *)request
                                   withParameters:(id)parameters
                                            error:(NSError *__autoreleasing *)error
    
    afnxwww.png

    AFJSONRequestSerializer

    - (NSURLRequest *)requestBySerializingRequest:(NSURLRequest *)request
                                   withParameters:(id)parameters
                                            error:(NSError *__autoreleasing *)error
    
    afnappjson.png

    文件上传AFStreamingMultipartFormData

    afnformdata.png

    这个接口是表单提交就用AFHTTPRequestSerializer, json提交就用AFJSONRequestSerializer,

    GET POST PUT PATCH DELETE

    AFN提供了上面的几种httpmethod,
    head先不管.

    一般所谓RESTFul风格, 从客户端角度可以这样理解.
    get获取资源
    post新建资源
    put更新资源(提交所有字段,空字段服务端也会置为空, 也就是所有字段必填)
    patch更新资源(提交部分字段, 空字段服务器忽略它, 也就是提交选填项.)
    delete删除资源

    例如对一个user接口.(user表有username, password两个字段) /api/user/
    get /api/user/1/ 就是请求id为1的用户信息
    post /api/user/ (参数在body中username="aa"&password="123456")就是新增user
    put /api/user/ (username="abc") 更新user,此时username=="abc",由于password字段为空, 此时服务器数据库中password==null
    patch /api/user/ (username="abc") 更新部分字段此时username=="abc",password=="123456"
    delete /api/user/1/ 删除id==1的用户.

    下一篇详细介绍django 服务端, 对不同的参数序列化方式以及不同的httpmethod 如何处理.

    相关文章

      网友评论

        本文标题:AFN中的Content-Type与RESTFul简介

        本文链接:https://www.haomeiwen.com/subject/fptvuxtx.html