gpt4 book ai didi

python - 从现有的 WSDL 构建 Django WebService

转载 作者:太空宇宙 更新时间:2023-11-04 00:47:36 24 4
gpt4 key购买 nike

我需要重写现有的 WebService 作为 Django 应用程序的一部分,目标是将 Django 应用程序集成到只能调用此特定 WebService 的遗留系统中。

所以我确实有一个非常复杂的 WSDL 文件,其中包含多种方法和庞大的数据结构。有什么方法可以使用该 WSDL 文件为 Django 中的应用程序生成 stub ,还是我必须自己创建所有必要的数据结构和方法签名?

最佳答案

查看 Zeep

Zeep 检查 WSDL 文档并生成相应的代码以使用文档中的服务和类型。

views.py(服务器)

from django.http import HttpResponse
from django.views import View
from zeep import Client

class MyConvertKilometer2MilesView(View):
def get(self, request):
# <view logic>
client = Client('http://www.webservicex.net/ConvertSpeed.asmx?WSDL')
result = client.service.ConvertSpeed(
100, 'kilometersPerhour', 'milesPerhour')
return HttpResponse('result')

如果您不确定获得返回的速度有多快(由于 SOAP 的性质),请使用

使用 Zeep 进行命令行测试

如果你想在中间测试一些东西,你可以使用 Zeep 的命令行界面来简化它。

python -mzeep http://www.soapclient.com/xml/soapresponder.wsdl

“zeep”库中的“Client”类用于创建将连接到指定 WSDL 端点“http://www.webservicex.net/ConvertSpeed.asmx?WSDL”的客户端对象。然后使用此客户端对象调用 Web 服务的“ConvertSpeed”方法,传入参数“100”、“kilometersPerhour”和“milesPerhour”。

views.py(客户端)

生成客户端 View 的 Django 示例是:

from django.http import HttpResponse
from django.views import View
from zeep import Client

class MyConvertKilometer2MilesView(View):
def get(self, request, speed):
client = Client('http://www.webservicex.net/ConvertSpeed.asmx?WSDL')
result = client.service.ConvertSpeed(speed, 'kilometersPerhour', 'milesPerhour')
return HttpResponse(result)

您还需要更新 urls.py 文件中的路由配置,以将此参数包含在 url 路径中。

from django.urls import path
from .views import MyConvertKilometer2MilesView

urlpatterns = [
path('convert/<int:speed>/', MyConvertKilometer2MilesView.as_view()),
]

关于python - 从现有的 WSDL 构建 Django WebService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38729081/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com