Putting It All Together: an Expanded Server Example
Now that we've covered the various dispatching modes and discussed
how to define a web service API with appropriate signatures, we're ready
to dive into a more realistic example. We'll develop the basics of a
football statistics web service, starting with two methods: Listgames and Getgamestats. The first method requires an
integer parameter that represents a year; it returns a list of games in
that year for which statistics are available. The second method requires
two parameters, both strings: a username and gamename. If the username is valid, this
method returns the actual statistics for a specific game.
We'll start by defining the web service API in app/apis/stats_api.rb:
class StatsApi < ActionWebService::API::Base
api_method :listgames,
:expects => [{:year => :int}],
:returns => [[:string]]
api_method :getgamestats,
:expects => [{:username => :string}, {:gamename => :string}],
:returns => [[Footballstats]]
endThe StatsApi class reflects the
service's design requirements. It defines two methods. The first,
listgames, requires an integer
argument; it returns an array of strings to our clients. The second
requires two string arguments and returns an array of Footballstats, which we will define as an
ActionWebService::Struct type.
The next step is to set up a controller in the file app/controllers/stats_controller.rb:
class StatsController < ApplicationController wsdl_service_name 'Stats' wsdl_namespace 'urn:sportsxml' web_service_dispatching_mode ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access