RoR:Ruby On Rails 的 Web Service
讨论组:http://group.qqread.com
],
:returns => [[Product]]
end
product_service_controller.rb
class ProductServiceController < ApplicationController
wsdl_service_name 'ProductService'
web_service_scaffold :invoke #此处可以像.NET一下直接在浏览器测试web service
def getall
return Product.find_all
end
def find
return Product.find(:all,:conditions =>["price >= :from and price <= :to",params])
end
end
6. C:\flexstore\ruby script/server
7. http://localhost:3000/Product_Service/service.wsdl
wsdl
<definitions name="ProductService" targetNamespace="urn:ActionWebService">−<types>−<xsd:schema targetNamespace="urn:ActionWebService">−<xsd:complexType name="ProductArray">−<xsd:complexContent>−<xsd:restriction base="soapenc:Array"><xsd:attribute wsdl:arrayType="typens:Product[]" ref="soapenc:arrayType"/></xsd:restriction></xsd:complexContent></xsd:complexType>−<xsd:complexType name="Product">−<xsd:all><xsd:element name="id" type="xsd:int"/><xsd:element name="name" type="xsd:string"/><xsd:element name="description" type="xsd:string"/><xsd:element name="price" type="xsd:double"/><xsd:element name="image" type="xsd:string"/><xsd:element name="triband" type="xsd:int"/><xsd:element name="camera" type="xsd:int"/><xsd:element name="video" type="xsd:int"/></xsd:all></xsd:complexType></xsd:schema></types><message name="Getall"> </message>−<message name="GetallResponse"><part name="return" type="typens:ProductArray"/></message>−<message name="Find"><part name="from" type="xsd:int"/><part name="to" type="xsd:int"/></message>−<message name="FindResponse"><part name="return" type="typens:ProductArray"/></message>−<portType name="ProductServiceProductServicePort">−<operation name="Getall"><input message="typens:Getall"/><output message="typens:GetallResponse"/></operation>−<operation name="Find"><input message="typens:Find"/><output message="typens:FindResponse"/></operation></portType>−<binding name="ProductServiceProductServiceBinding" type="typens:ProductServiceProductServicePort"><soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/>−<operation name="Getall"><soap:operation soapAction="/product_service/api/Getall"/>−<input><soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:ActionWebService" use="encoded"/></input>−<output><soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:ActionWebService" use="encoded"/></output></operation>−<operation name="Find"><soap:operation soapAction="/product_service/api/Find"/>−<input><soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:ActionWebService" use="encoded"/></input>−<output><soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:ActionWebService" use="encoded"/></output></operation></binding>−<service name="ProductServiceService">−<port name="ProductServiceProductServicePort" binding="typens:ProductServiceProductServiceBinding"><soap:address location="http://localhost:3000/product_service/api"/></port></service></definitions>
8.测试 http://localhost:3000/Product_Service/invoke
9.使用自己定义的结构
#model
class ReportStruct < ActionWebService::Struct
member :id, :int
member :CreateDate,:string
member :UpdateDate,:string
member :user_id,:int
member :Content,:string
member :username,:string
end
#Controller
def reports_find(userid)
if userid != 0
reports = Report.find(:all,:conditions => ["user_id= :userid",params],:order => "CreateDate desc")
else
reports = Report.find(:all,:order => "CreateDate desc")
end
results = []
reports.each do |rec|
results << ReportStruct.new(:id => rec.id, :CreateDate => rec.CreateDate,
:UpdateDate => rec.UpdateDate, :user_id => rec.user_id,
:Content => rec.Content,:username => rec.user.DisplayName)
end
return results
end
- 最新文章
- Rational系列产品介绍[01-04]
- rational rose使用技巧[01-04]
- Rational Robot压力测试实例[01-04]
- 在Windows上安装配置Apache2.2.3及实现多站点[01-04]
- 初用ruby的几个注意事项[01-04]
- Rational的光辉岁月[01-04]
- 相关文章
- 实战“Mobile Information 2001 Ser..[01-04]
- hello,world!win32汇编小程序[01-04]
- 利用 Eclipse Visual Editor 项目构建 ..[01-04]
- BEA Weblogic Portal内容管理的几点开发经验[01-04]
- PB中一个类Word打印对话框的实现[01-04]
- PB中使用FORMULA ONE入门介绍[01-04]
