zoukankan      html  css  js  c++  java
  • WSGI学习系列WSME

    Introduction

      Web Services Made Easy (WSME) simplifies the writing of REST web services by providing simple yet powerful typing,

      removing the need to directly manipulate the request and the response objects.

    Protocols

      WSEM support lots of protocols.

      'restjson':   Implements a REST+Json protocol.

      'restxml':   Implements a REST+Xml protocol.

      'soap':    Implements the SOAP protocol.

    Conception

    WSRoot:   Root controller for webservices

    @expose:   The return type of web service interface

    @validate:  Validate the incoming paramters type

    @signature:  Set the return type and the incoming paramters type

    Example

      WSME provide details implements for Web Service.

      WSME need a Web Framework to provide service.

      In the OpenStack, Horizon use Django web framework.

      The following example use bottle web framework.

    from wsme import WSRoot, expose, validate, signature
    from wsme.types import File
    
    import bottle
    from six import uclass Person(object):
        id = int
        firstname = unicode
        lastname = unicode
    
        hobbies = [unicode]
    
        def __repr__(self):
            return "Person(%s, %s %s, %s)" % (
                self.id,
                self.firstname, self.lastname,
                self.hobbies
            )
    
    class DemoRoot(WSRoot):
        @expose(int)
        @validate(int, int)
        def multiply(self, a, b):
            return a * b
    
        @expose(File)
        @validate(File)
        def echofile(self, afile):
            return afile
    
        @expose(unicode)
        def helloworld(self):
            return u"Здраво, свете (<- Hello World in Serbian !)"
    
        @expose(Person)
        def getperson(self):
            p = Person()
            p.id = 12
            p.firstname = u'Ross'
            p.lastname = u'Geler'
            p.hobbies = []
            print p
            return p
    
        @expose([Person])
        def listpersons(self):
            p = Person()
            p.id = 12
            p.firstname = u('Ross')
            p.lastname = u('Geler')
            r = [p]
            p = Person()
            p.id = 13
            p.firstname = u('Rachel')
            p.lastname = u('Green')
            r.append(p)
            print r
            return r
    
        @expose(Person)
        @validate(Person)
        def setperson(self, person):
            return person
    
        @expose([Person])
        @validate([Person])
        def setpersons(self, persons):
            print persons
            return persons
    
        @signature(int, int, int)
        def increment(self, value, delta=1):
            return value + delta
    
        @signature(Person, body=Person)
        def updateauthor(self, person):
            return person
    
    # Set Web Root Path root
    = DemoRoot(webpath='/ws')
    # Add Soap protocol root.addprotocol(
    'soap', tns='http://example.com/demo', typenamespace='http://example.com/demo/types', baseURL='http://127.0.0.1:8080/ws/', ) # Add Rest Json protocal root.addprotocol('restjson') # Create a wsgi Application bottle.mount('/ws/', root.wsgiapp()) # Run Applicaton in bottle bottle.run()
  • 相关阅读:
    (转)Android 升级 ADT 之后报错之一 case语句 .
    myeclipse CTRL+1功能
    (转)项目延期原因及应对之道
    shiro的使用2 灵活使用shiro的密码服务模块
    shiro的使用1 简单的认证
    最全的 eclipse web 项目目录结构以及Tomcat的各个目录的作用
    Eclipse导入git上的maven web项目 以及部署成功运行
    eclipse中怎么导入git库下载下来的web项目
    git和github的关系以及简单易懂的理解
    LINUX 怎么实现root和普通用户的切换及怎么更改root密码
  • 原文地址:https://www.cnblogs.com/edisonxiang/p/4724769.html
Copyright © 2011-2022 走看看