如何解决用于处理存在于另一台服务器上的 API 请求的适配器
所以这是场景:
- /questionnaire/{questionnaire_id}
- /问卷/
- /questionnaire/question/{question_id}
- 问卷/问题/
要求:
- 我不想直接从前端 B 访问服务器 A,而是, 我想访问将验证请求的后端 SERVER B 来自 FRONTEND B 并依次点击后端 SERVER A 以获取 响应。
- 现在我不想在 SERVER B 上编写重复的 API 来达到 SERVER A 上的相应 API。我想要的是一个适配器 处理 URL 以“/questionnaire/”开头的所有 API 请求和 验证用户或请求,然后点击SERVER A,接收数据 并将其返回到 FRONTEND B。
那么 Django 中是否有为此内置的工具,或者是否有任何解决方法可以使其成为可能?提前致谢。
解决方法
你可以“卷曲”绕过它。您必须在 serverB 上为 api 添加处理程序,否则无法接收请求。一旦您从前端收到请求,您就可以使用 python shell 调用带有相关参数的 curl 有效地将请求转发到服务器 A。不过,后者不是一个理想的设计,您将 B 作为网关,而您希望它充当路由器。如果您希望身份验证允许 B 发出一个会话令牌,然后该令牌会随每次调用 A 一起传递。 这里有一些代码可以为您提供上下文
import os
import subprocess
....
l_strDomain = get_domain_name()
l_cmd = 'curl --header "Content-Type: application/json"'+\
' --request POST'+\
' --data \'json data here if needed'+\
' http://ServerA/Api/'
p1 = subprocess.Popen(l_cmd,shell=True,stdout=subprocess.PIPE,encoding='utf-8').stdout
output = p1.read()
p1.close();
try:
l_data = simplejson.loads(output)
except Exception as e:
..do errro handling
,
我们可以使用服务器 A 和服务器 B 之间的 Api 密钥身份验证来实现这一点。
因此,当您收到来自用户(来自前端 B)到服务器 B 的请求时。 服务器 B 对用户进行身份验证后,您可以有一个中间件,使用 python 的 requests 模块向服务器 A 发送请求。
这个从服务器 B 发送到服务器 B 的请求将进行 API 密钥认证。
从服务器 A 得到响应后,您可以将其返回给前端。
希望这将有助于解决这一挑战。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。