我有現有的REST API,使用Django Rest Framework編寫,現在由於某些客戶端要求,我必須將其中的一些作爲SOAP Web服務公開。編寫一個封裝來將現有的REST API作爲SOAP Web服務公開?
我想知道如何去在Python寫的包裝,這樣我可以公開一些自己的REST API作爲SOAP Web服務的。或者我應該單獨製作SOAP Web服務並重新使用代碼?
我知道這是一個奇怪的情況,但任何幫助,將不勝感激。
我有現有的REST API,使用Django Rest Framework編寫,現在由於某些客戶端要求,我必須將其中的一些作爲SOAP Web服務公開。編寫一個封裝來將現有的REST API作爲SOAP Web服務公開?
我想知道如何去在Python寫的包裝,這樣我可以公開一些自己的REST API作爲SOAP Web服務的。或者我應該單獨製作SOAP Web服務並重新使用代碼?
我知道這是一個奇怪的情況,但任何幫助,將不勝感激。
你可以說,SOAP
和REST
基本上是和oranges
。
你基本上需要的東西,在那裏你可以消耗REST API的。
依我之見,你有一些選擇:
def wrap_internal_api_call(requests_api_method, uri,
data, cookies=None, headers=None):
return requests_api_method(uri, data=data, files=files,
cookies=cookies, headers=headers)
你怎麼可以使用它?
import requests
from django.core.urlresolvers import reverse
from django.conf import settings
from spyne.service import Service
from spyne.decorator import srpc
from spyne.model import ByteArray, DateTime, Uuid, String, Integer, Integer8, \
ComplexModel, Array
# This method will hit the internal API which is written in DJANGO REST FRAMEWORK
def build_internal_uri(uri):
return 'http://localhost:{0}{1}'.format(settings.INTERNAL_API_PORT, uri)
class RequestHeader(ComplexModel):
some_field = String
class SomeService(Service):
# Headers related doc
# https://github.com/arskom/spyne/blob/68b9d5feb71b169f07180aaecfbe843d8ba500bf/doc/source/manual/06_metadata.rst#protocol-headers
__in_header__ = RequestHeader
@srpc(String, _returns=String)
def echo_string(s):
headers = ctx.in_header.some_field
# Reverse url from the urls.py file
local_order_fetch_url = build_internal_uri(reverse('website:order_details')) + '?order_id=' + order_id
response = wrap_internal_api_call(requests.get, local_order_fetch_url,
{ 'data': 'sample_data' }, None, headers)
return response['data'] # Some string data
app = Application([SomeService], 'tns', in_protocol=HttpRpc(parse_cookie=True),
out_protocol=HttpRpc())
現在也有一些例子,你可以看看,是Django的配置使其available
讓我們討論兩個途徑及其利弊
單獨的SOAP服務
SOAP包裝使用Python(我favourate和建議的路要走)
在這種情況下回答所有上述問題是。
您的來電,
評論和critisicsm是最歡迎的
還有呢?你準確的問題是什麼? –
我想知道如何去寫一個包裝在Python中,以便我可以公開我的一些REST API作爲SOAP Web服務。或者我應該單獨製作SOAP Web服務並重新使用代碼? –
那麼你有什麼嘗試? –