django API 中接口的互相调用实例
我就废话不多说了,还是直接上代码吧!
url = "http://%s:%s/api-token-auth/" % (ip, port)
query_args = {
"username": username,
"password": password
}
resp = requests.post(url=url, data=query_args)
token = json.loads(resp.text)["token"]
headers = {"Authorization": "JWT" + " " + token} # 拿到token,拼成headers
post_url = "http://%s:%s/message/message-level-two/"% (ip, port)
data = {
"app": app,
"url": url,
"message_id": message_id,
"head": head,
"title": title,
"userprofile_id_list": userprofile_id_list
}
headers = self.headers
requests.post(url=post_url, data=data, headers=headers)
获取当前请求的ip和端口
host_ip, host_port = self.request.META.get("HTTP_HOST").split(':')[0],
self.request.META.get("HTTP_HOST").split(':')[1]
常见的请求头如下:
CONTENT_LENGTH – The length of the request body (as a string). CONTENT_TYPE – The MIME type of the request body. HTTP_ACCEPT – Acceptable content types for the response. HTTP_ACCEPT_ENCODING – Acceptable encodings for the response. HTTP_ACCEPT_LANGUAGE – Acceptable languages for the response. HTTP_HOST – The HTTP Host header sent by the client. HTTP_REFERER – The referring page, if any. HTTP_USER_AGENT – The client’s user-agent string. QUERY_STRING – The query string, as a single (unparsed) string. REMOTE_ADDR – The IP address of the client. REMOTE_HOST – The hostname of the client. REMOTE_USER – The user authenticated by the Web server, if any. REQUEST_METHOD – A string such as “GET” or “POST”. SERVER_NAME – The hostname of the server. SERVER_PORT – The port of the server (as a string).
获取请求头内容的用META
示例:
def index(request):
ip = request.META.get("REMOTE_ADDR")
return HttpResponse("你的ip地址是%s"%ip)
http://10.254.30.27/1 self.kwargs[‘pk’] # 可以拿到后边的 1
补充知识:django 使用requests请求相关接口
1、如果是get请求接口,并且需要带相关参数的话,可以借鉴下面的代码:
import requests
from django.http import JsonResponse
def get_info(request):
url = 'http://www.baidu.com'
params = {'id': 1, 'user': 'lin'}
response = requests.get(url=url, params=params)
return JsonResponse(response.text, safe=False)
这样将会返回一串json的字符串数据。
2、如果是post请求接口,并且需要带相关参数的话,可以借鉴下面的代码:
import requests
from json import dumps
from django.http import JsonResponse
def get_info(request):
url = 'http://www.baidu.com'
data = {'id': 1, 'user': 'lin'}
response = requests.post(url=url, data=dumps(data))
return JsonResponse(response.text, safe=False)
注:
(1)、其中必须注意的为data这个参数,必须要用dumps(data)转换一下,不然会报错,response状态码为400,bad request error 400 while using python requests.post function。
(2)、如果需要在post请求底下加相关请求头的话,可以借鉴下面的代码:
import requests
from json import dumps
from django.http import JsonResponse
def get_info(request):
url = 'http://www.baidu.com'
data = {'id': 1, 'user': 'lin'}
headers = {'content-Type': 'application/json', 'Accept': '*/*'}
response = requests.post(url=url, data=dumps(data), headers=headers)
return JsonResponse(response.text, safe=False)
这里如果response的状态码报415错误的话,即HTTP请求415错误 – 不支持的媒体类型(Unsupported media type),这就是content-Type可能写错了,就要注意一下了,因为通常接口会封装一些参数到请求头底下。
以上这篇django API 中接口的互相调用实例就是小编分享给大家的全部内容了,希望能给大家一个参考。
- 3555: [Ctsc2014]企鹅QQ
- 【实战】RFID Hacking(1):看我如何突破门禁潜入FreeBuf大本营
- P2885 [USACO07NOV]电话线Telephone Wire
- 实战-Fluxion与wifi热点伪造、钓鱼、中间人攻击、wifi破解
- 【下载】PyTorch实现的神经网络翻译框架——机器翻译工具包 nmtpytorch
- P2605 [ZJOI2010]基站选址
- MYSQL之索引原理与慢查询优化
- MYSQL之视图、触发器、存储过程、函数、事物、数据库锁和数据库备份
- P1452 Beauty Contes
- Python基础(一)
- P1452 Beauty Contes(旋转卡壳版)
- python常见模块之os模块
- BZOJ 2127: happiness(最小割解决集合划分)
- lightswitch 添加 TreeView 控件
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- ubuntu搭建常见开发环境
- 基于 Kubernetes,Helm 及 Jenkins 实现弹性 CI/CD
- Go by Example 中文版: 读文件
- Apache Shiro权限框架理论介绍
- 【技术创作101训练营】Linux服务器的晴雨表—top命令
- 微服务之间的通信的方式
- Python从入门到熟练(7):函数
- Django调用百度地图api在地图上批量增加标记点
- Spring Cloud Config - 统一配置中心
- 从头分析一则traceId穿透问题(附解决方案)
- openldap的介绍与安装
- docker搭建环境如何配置端口
- Go语言入门(二)-流程控制
- 【Java8新特性】02 函数式接口和Lambda表达式实战练习:环绕执行模式使行为参数化
- Go语言入门(三)数组和切片