python webservice hello world

最近在搞基於python的webservice項目,今天爲把環境給配好,折騰了很多時間,仍是把配的過程記錄下來,之後備用:python

首先你係統上要有python,這個沒必要說啦,我係統上用的是2.7+git

其次,要用python進行webservice開發,還須要一些庫:github

    lxml :web

        命令行下 sudo easy_install lxml 就能安裝瀏覽器

    pytz :app

        命令行下 sudo easy_install pytz 就能安裝this

    soaplib:spa

        進行webservice開發必需要用的庫,能夠在https://github.com/volador/soaplib拿到,注意要先安裝上面兩個插件再安裝這個,由於這個依賴於上面兩個插件,把zip拿下來後解壓,sudo python setup.py install 就能安裝了。插件

Soaplib is an easy to use python library for publishing soap web services using WSDL 1.1 standard, and answering SOAP 1.1 requests. With a very small amount of code, soaplib allows you to write a useful web service and deploy it as a WSGI application.
完成上面步驟後就能進行webservice發佈了,看下helloworld:

直接貼代碼:server.py命令行

import soaplib
from soaplib.core.util.wsgi_wrapper import run_twisted #發佈服務
from soaplib.core.server import wsgi
from soaplib.core.service import DefinitionBase  #全部服務類必須繼承該類
from soaplib.core.service import soap  #聲明註解
from soaplib.core.model.clazz import Array #聲明要使用的類型
from soaplib.core.model.clazz import ClassModel  #若服務返回類,該返回類必須是該類的子類
from soaplib.core.model.primitive import Integer,String 
class C_ProbeCdrModel(ClassModel):
	__namespace__ = "C_ProbeCdrModel"
	Name=String
	Id=Integer
class HelloWorldService(DefinitionBase):  #this is a web service
	@soap(String,_returns=String)    #聲明一個服務,標識方法的參數以及返回值
	def say_hello(self,name):
		return 'hello %s!'%name
	@soap(_returns=Array(String))
	def GetCdrArray(self):
		L_Result=["1","2","3"]
		return L_Result
	@soap(_returns=C_ProbeCdrModel)
	def GetCdr(self):     #返回的是一個類,該類必須是ClassModel的子類,該類已經在上面定義
		L_Model=C_ProbeCdrModel()
		L_Model.Name=L_Model.Name
		L_Model.Id=L_Model.Id
		return L_Model 
if __name__=='_main__':
	soap_app=soaplib.core.Application([HelloWorldService], 'tns')
	wsgi_app=wsgi.Application(soap_app)
	print 'listening on 127.0.0.1:7789'
	print 'wsdl is at: http://127.0.0.1:7789/SOAP/?wsdl'
	run_twisted( ( (wsgi_app, "SOAP"),), 7789)
if __name__=='__main__':  #發佈服務
	try:
		from wsgiref.simple_server import make_server
		soap_application = soaplib.core.Application([HelloWorldService], 'tns')
		wsgi_application = wsgi.Application(soap_application)
		server = make_server('localhost', 7789, wsgi_application)
		server.serve_forever()
	except ImportError:
		print 'error'


python server.py能夠直接運行服務了。運行服務後打開瀏覽器,地址欄上鍵入: http://localhost:7789/SOAP/?wsdl就能看到描述服務的xml文檔了。

請求服務:

須要用到suds庫:

    具體能夠在https://fedorahosted.org/suds/下載。安裝跟上面同樣。

python交互模式下鍵入:

from suds.client import Client

test=Client('http://localhost:7789/SOAP/?wsdl')

print test.service.say_hello('volador')

這樣就調用了say_hello這個服務了。

相關文章
相關標籤/搜索