Django中使用RPC协议

一、使用所需环境
pip install django-json-rpc

二、在django项目settings配置文件中注册 'jsonrpc'

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'jsonrpc',
    'app',
]

三、视图中调用

apis.py

from rest_framework import generics
from app.models import Person
from app.serializers import PersonSerializer
from jsonrpc import jsonrpc_method

# http
class PersonAPI(generics.ListCreateAPIView):
    queryset = Person.objects.all()
    serializer_class = PersonSerializer

# rpc
@jsonrpc_method('person')
def person(request):
    queryset = Person.objects.all()
    res = PersonSerializer(queryset, many=True).data
    return res

四、注册路由

3.Add the JSON-RPC mountpoint and import your views

urls.py

from django.urls import path
from jsonrpc import jsonrpc_site
from app.apis import PersonAPI

urlpatterns = [
    path('person/', PersonAPI.as_view()),
    path('rpc-person/', jsonrpc_site.dispatch),
]

五、rpc调用对比api调用


### api调用
import requests

url = "http://127.0.0.1:8000/person/"
res = requests.get(url)
print(res.json())

返回值

[
       {'id': 1, 'name': 'one', 'age': 22}, 
       {'id': 2, 'name': 'two', 'age': 23}, 
       {'id': 3, 'name': 'three, 'age': 24}
]

### rpc调用
from jsonrpc.proxy import ServiceProxy

url = "http://127.0.0.1:8000/rpc-person/"
s = ServiceProxy(url)
res = s.person.data()
print(res)

返回值

{
    'id': '425d9d70-ccbe-11ea-a8ca-7470fd0bd93a',
    'error': None, 
    'result': [
        {'id': 1, 'name': 'one', 'age': 22}, 
        {'id': 2, 'name': 'two', 'age': 23}, 
        {'id': 3, 'name': 'three, 'age': 24}
    ], 
    'jsonrpc': '1.0'
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 安装Nginx:yum install -y nginxsystemctl start nginxsystemct...
    碧潭飘雪ikaros阅读 756评论 0 1
  • 一、restful架构 1、restful概述 ——REST即表述性状态传递(英文:Representationa...
    Zzmi阅读 1,536评论 0 2
  • 为什么学习Python? 通过什么途径学习的Python? 上网收集视频,资料 关注公证号 买教程,书籍 Pyth...
    130920阅读 1,424评论 0 0
  • restframework restframework简介 它是基于Django的,帮助我们快速开发符合restf...
    DayBreakL阅读 901评论 0 2
  • 模块间联系越多,其耦合性越强,同时表明其独立性越差( 降低耦合性,可以提高其独立性)。软件设计中通常用耦合度和内聚...
    riverstation阅读 2,267评论 0 8

友情链接更多精彩内容