广告
返回顶部
首页 > 资讯 > 后端开发 > Python >应用Python开发WebService
  • 350
分享到

应用Python开发WebService

PythonWebService 2023-01-31 05:01:18 350人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

Why 得益于python领域广泛的功能包,使用Python来开发WEBService,实现服务端或客户端,是比较快捷的途径。最近项目上恰巧遇到一个问题,内外系统分别作为客户端与服务端,接口功能已基本确定,但目前双方项目进度不统一

Why

得益于python领域广泛的功能包,使用Python开发WEBService,实现服务端或客户端,是比较快捷的途径。最近项目上恰巧遇到一个问题,内外系统分别作为客户端与服务端,接口功能已基本确定,但目前双方项目进度不统一。为避免进度受阻,希望能快速开发一个WebService服务端,以验证某些客户端功能是否正常。当然,采用其他工具或方法 也可以快速开发出WebService服务端,但本文仅验证python实现。

How

    准备工作

软件环境:windows + python2.7 + setuptools
工具包:
soaplib
lxml
pytz
twisted
suds
以上安装包,在python安装目录下运行eazy_install (如:eazy_install suds) 即可自动下载安装。

    开发服务端

服务端python源码如下:

# coding: utf-8
import soaplib
import cx_oracle as cx

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, Double
from soaplib.core import Application

# 数据库交互层,模拟一个简单的数据库交互
class DBManage(ClassModel):
    reqNo       = ''
    paramOut    = []

    def __init__(self, reqNo):
        self.reqNo = reqNo

    def exeQuery(self):
        # Connect to database and query values
        conn = cx.connect('db tns connection string') #填写数据库连接字符串
        conn.begin() #开始事务
        print 'connected'
        cursor = conn.cursor()
        cursor.execute("""select 'Hello!' msg from dual""") #查询示例
        rs = cursor.fetchone()
        rtnMsg = rs[0] 
        print rtnMsg # Hello!

        self.paramOut = [rtnMsg]

        conn.commit()  #提交事务
        cursor.close() #关闭资源
        conn.close()   #关闭连接


# 请求信息类
class TestRequestInfo(ClassModel):
    __namespace__ = "TestRequestInfo"
    reqNo           = String


# 返回信息类
class ResultInfo(ClassModel):
    __namespace__ = "ResultInfo"
    reqNo         = String
    resMsg        = String

# 请求方法
def exeRules(reqInfo):
    reqNo = reqInfo.reqNo

    # Query Database and get values
    dm = DBManage(reqNo)
    dm.exeQuery()
    rs = dm.paramOut
    print 'dm invoke ok!'

    resInfo = ResultInfo()
    resInfo.reqNo  = reqNo
    resInfo.resMsg = rs[0]

    #print resInfo
    return resInfo


class TestService(DefinitionBase):  #WebService Method
    @soap(TestRequestInfo,_returns=ResultInfo)
    def getResultInfo(self,reqInfo):
        resInfo = ResultInfo()
        resInfo = exeRules(reqInfo)
        #print resInfo
        return resInfo


if __name__=='__main__':
    try:
        print '服务已启动'
        from wsgiref.simple_server import make_server
        soap_application = Application([TestService], 'tns')
        wsgi_application = wsgi.Application(soap_application)
        server = make_server('localhost', 8899, wsgi_application)
        server.serve_forever()

    except ImportError:
        print 'error'

服务端创建成功并启动,通过浏览器输入 Http://localhost:8899/SOAP?wsdl,可看到接口wsdl,如下图示:
接口wsdl结构

    创建客户端

使用python命令行创建客户端并调用服务:

>>> from suds.client import Client
>>> wsc = Client("http://localhost:8899/SOAP?wsdl")
>>> print wsc

Suds ( https://fedorahosted.org/suds/ )  version: 0.4 GA  build: R699-20100913

Service ( Application ) tns="tns"
   Prefixes (3)
      ns0 = "ResultInfo"
      ns1 = "TestRequestInfo"
      ns2 = "tns"
   Ports (1):
      (Application)
         Methods (1):
            getResultInfo(ns1:TestRequestInfo reqInfo, )
         Types (94):
            xs:ENTITIES
            xs:ENTITY
            xs:ID
            xs:IDREF
            ...
>>> requestInfo = {}
>>> requestInfo['reqNo'] = '12345'
>>> wsc.service.getResultInfo(requestInfo)
(ResultInfo){
   reqNo = "12345"
   resMsg = "Hello!"
 }
>>> 

总结

1、通过soaplib实现WebService服务端,通过suds自动实现客户端;
2、实际WebService接口中可能存在复杂对象数组,需要创建相应的ClassMdel类,并通过Array()实现。

参考资料

  1. 利用soaplib搭建webservice详细步骤和实例代码链接
  2. python开发webservice例子-服务端及客户端代码

--结束END--

本文标题: 应用Python开发WebService

本文链接: https://www.lsjlt.com/news/188859.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 应用Python开发WebService
    Why 得益于Python领域广泛的功能包,使用Python来开发WebService,实现服务端或客户端,是比较快捷的途径。最近项目上恰巧遇到一个问题,内外系统分别作为客户端与服务端,接口功能已基本确定,但目前双方项目进度不统一...
    99+
    2023-01-31
    Python WebService
  • python开发Webservice服务
    Webservice 记录一下python开发 Web services跨平台,跨语言,跨设备之间的通信。 Web service 三要素 SOAP:SOAP协议 WSDL:Web service描述语言,我的理解是:你服务端的...
    99+
    2023-01-31
    python Webservice
  • 如何使用axis开发webservice
    小编给大家分享一下如何使用axis开发webservice,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!preparation:说明:相关的可能要了解SOAP(简...
    99+
    2023-06-17
  • Spring集成XFire开发WebService
    Spring集成XFire开发WebService的步骤如下:1. 添加XFire的依赖在Maven项目中,可以在pom.xml文件...
    99+
    2023-09-12
    Spring
  • 【三】SpringBoot开发WebService接口
    SpringBoot开发WebService接口 一、服务端开发 1、引入依赖 org.springframework.boot ...
    99+
    2023-09-04
    spring boot java
  • MyEclipse开发一个webservice接口
    一直以来对于接口这个东西都很好奇,各种客户也一直在说那个什么什么数据我们提供给你们一个接口就好了,结果还是不是很明白.于是乎就有了下面的小故事,接下来我们就进入正文吧---大概可以分为这样的步骤新建webservice project,Fr...
    99+
    2023-05-31
    myeclipse webservice 接口
  • Eclipse发布WebService和调用WebService接口
    要发布WebService,您需要遵循以下步骤:1. 创建一个Java项目,并将其导入到Eclipse中。2. 在项目中创建一个类,...
    99+
    2023-09-08
    Eclipse
  • 详解Spring boot+CXF开发WebService Demo
    最近工作中需要用到webservice,而且结合spring boot进行开发,参照了一些网上的资料,配置过程中出现的了一些问题,于是写了这篇博客,记录一下我这次spring boot+cxf开发的webservice的配置过程,仅供参考。...
    99+
    2023-05-31
    spring boot cxf
  • python开发sparkSQL应用
    准备条件:部署hadoop集群部署spark集群安装python(本人安装的是anaconda3,python是3.6)配置环境环境变量:vi .bashrc  #添加如下内容 export SPARK_HOME=/opt/spark/cu...
    99+
    2023-01-31
    python sparkSQL
  • java怎么实现webservice接口开发
    要实现Java的Web Service接口开发,可以使用Java的一些框架和库来帮助开发。以下是一个基本的步骤示例:1. 创建一个J...
    99+
    2023-09-15
    java webservice
  • python 调用webservice两
    webservice提供方: http://www.webxml.com.cn/zh_cn/web_services.aspx   天气预报webservice: http://webservice.webxml.com.cn...
    99+
    2023-01-31
    python webservice
  • Python调用webservice接口
    from suds.client import Client url = "http://218.90.174.179:50038/JmYfjzService/clientRegisterServiceWSDL" test = Clie...
    99+
    2023-01-31
    接口 Python webservice
  • python 开发GUI应用之Dabo
      这几天在研究用python开发GUI应用程序,首先选择了wxpython,英文书籍wxpython in action是不错的,网上也有中文版。   在win7下安装python2.7,wxpython2.8.12.1,来个HelloW...
    99+
    2023-01-31
    python GUI Dabo
  • python怎么开发应用程序
    这篇文章给大家分享的是有关python怎么开发应用程序的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬虫;4、嵌入式应用...
    99+
    2023-06-14
  • Python桌面应用开发之PyQt
    文章目录 引言:桌面应用开发三大框架介绍一、PyQT介绍二、安装三、使用教程(1)基础窗口(2)分区布局窗口(类似于html中div的使用)(3)栅格布局窗口(类似于html中的table)(...
    99+
    2023-08-31
    python 开发语言
  • Python应用开发——串口通信
    Python应用开发——串口通信 目录 Python应用开发——串口通信前言1 环境搭建2 硬件准备3 代码编写与测试3.1 简单测一下串口收发3.2 补充细节3.3 完善整个收发流程 ...
    99+
    2023-09-28
    python 串口 嵌入式
  • spring boot应用调用webservice接口
    文章目录 概述一、Web Services是什么?二、使用步骤1.引入依赖2.创建配置类,根据接口路径生成Client 交给Spring 管理3.测试Web Services接口调用4.排错 总结 概述 在早期的系统中,通...
    99+
    2023-08-19
    spring boot java 后端 c# .net
  • Python使用Dash开发网页应用
    Python Dash开发Web应用的控件基础本文主要是通过Dash的Checklist组件,简单介绍使用Dash开发的Web应用展示效果如下:python dash简单基础Dash应用程序由两部分组成:第一部分是应用程序的布局(Layou...
    99+
    2023-05-14
    Python Dash
  • C# WebService如何发布与调用
    这篇文章主要为大家展示了“C# WebService如何发布与调用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C# WebService如何发布与调用”这篇文章吧。Web Service是可操...
    99+
    2023-06-18
  • Python开发建议:学习并应用最佳的开发实践
    Python是一种简单易学的编程语言,但要成为一名优秀的Python开发人员,除了掌握语法和基本知识外,还需要学习并应用最佳的开发实践。在本文中,我们将探讨一些Python开发的最佳实践,以帮助开发人员写出高质量、可维护和高效的Python...
    99+
    2023-11-22
    Python 应用 开发实践
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作