RESTful API概述

Posted 学霸初养成

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RESTful API概述相关的知识,希望对你有一定的参考价值。

什么是REST

REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移”。这里说的表征性,就是指资源,通常我们称为资源状态转移。

什么是资源?

网络上所有的文本、图片、视频等实体,都是资源。除了实体,还可以是抽象概念,比如某人的手机号、住址等。找到某个资源,需要URL,统一资源定位符。

URL和URI

URI是统一资源标志符。URL用来描述地址,URI用来对资源进行标识。URL是URI的一个子集,通过定位的方式实现URI

RESTful规范

面向资源

每个URL代表一种资源,URL中尽量不要用动词,要用名词

根据请求方式不同,进行不同的操作

GET:     从服务器取出资源
POST:   在服务器新建一个资源
PUT:     在服务器更新资源(客户端提供改变后的完整资源)
PATCH: 在服务器更新资源(客户端提供改变的属性)
DELETE:从服务器删除资源

在URL中体现版本

https://www.cnblogs.com/v1/myclass

在URL中体现是否是API

https://www.cnblogs.com/api/vi/myclass

尽量使用HTTPS

https://www.cnblogs.com/api/vi/myclass

响应返回规范

{
    code: 1000, // 响应码
    msg: "ok",  // 描述信息
    data:{  // 数据
        id:1,
        name:\'小强\',
        depart_id:http://www.luffycity.com/api/v1/depart/8
    }
}

举例:

例如动物园中有很多的动物,如何进行增删改查?

  • 查找一个老虎:https://www.zoo.com/api/v1/animal?class=tiger&id=1 GET
  • 查找所有老虎:https://www.zoo.com/api/v1/animal?class=tiger         GET
  • 增加一个老虎:https://www.zoo.com/api/vi/animal      POST
  • 删除一个老虎:https://www.zoo.com/api/vi/animal         DELETE
  • 修改一个老虎的某个属性:https://www.zoo.com/api/vi/animal PATCH
  • 修改一个老虎的所有属性:https://www.zoo.com/api/vi/animal PUT

我们可以看到URL中全部都是名词,对资源的操作(动作)体现在请求方式上,体现了面向资源的思想。

Django REST Framework

是基于Django的RESTful实现

下载

pip3 install djangorestframework

settings.py

INSTALLED_APPS = [
    ...
    \'rest_framework\',
]

urls.py

from DemoApp.views import BookView
urlpatterns = [
    path(\'list\', BookView.as_view()),
]

views.py

from rest_framework.views import APIView
from rest_framework.response import Response
 
class BookView(APIView):
    def get(self, request, *args, **kwargs):
        return Response(\'GET请求,响应内容\')
   
    def post(self, request, *args, **kwargs):
        return Response(\'POST请求,响应内容\')
   
    def put(self, request, *args, **kwargs):
        return Response(\'PUT请求,响应内容\')

DRF主要功能和组件

 

以上是关于RESTful API概述的主要内容,如果未能解决你的问题,请参考以下文章

gRPC helloworld service, RESTful JSON API gateway and swagger UI

RESTFul API最佳实践

我的RESTful API没有更新数据库,但是ajax返回成功

玩转 SpringBoot 2 快速搭建 | RESTful Api 篇

SpringBoot RESTful API 架构风格实践

SwaggerEditor:如何编写RESTful API文档