收到一个POST请求可以发送到外部API吗?

时间:2019-06-26 07:06:17

标签: django-rest-framework

我正在从前端接收JSON POST请求并将其存储在数据库中-这是后端的标准行为。

是否可以将相同的数据(或验证后的部分数据)与另一个POST请求一起发送到不受我管理的外部API?如果是这样,我认为可以通过扩展create方法来实现-我正确吗?在后端收到该请求后,如何触发向该第三方API发送请求?

您知道任何例子吗?

3 个答案:

答案 0 :(得分:1)

您可以创建(覆盖)自定义的“创建”视图方法,将调用添加到外部API(如果外部API是REST,则“请求”是一个很好的工具)。

建立一个新的HTTP连接(外部)会影响端点响应速度,如果外部服务太慢,则会产生超时,因此我建议使用异步机制(celery task worker或async function)进行外部api调用并确保检索循环和超时。

答案 1 :(得分:1)

是的,您可以使用pip install requests来完成。这意味着您的api正在充当代理。

示例

from rest_framework import Response
import requests

def api_view(request):
    external_api_url = 'https://example.com/api/endpoint/'
    data = request.POST
    res = requests.post(external_api_url, data)
    return Response(res.json())

答案 2 :(得分:1)

使用请求库,您可以将数据发布到外部API

例如

import requests

request_type = "POST"
data = {"email":"email", "name": "name"}
api_url = "https://external-api.com/api/post/"
response = requests.request(request_type, api_url, data=data)