I'm Jason, a web application developer in East Tennessee.

Web Services

Web Services

Web services are software systems designed to allow for communication between two separate systems on a network, or more specifically in this case - the Internet. Often a website will refer to it's web services as an Application Programming Interface (API), as the web service isn't strictly intended to be used by other websites, but also with desktop applications. For instance Twitter's developers website refers to it's programmer integration options as an API.

The dominant protocol adopted earlier for web services was SOAP, however most web applications developed with "Web 2.0" standards in mind are adopting RESTful interfaces which correlate with the HTTP methods discussed above.

RESTful Web Services

The World Wide Web, and thus HTTP, was originally designed to provide a full suite of methods for the creation, reading, updating, and destroying (also known as CRUD) of resources on the web. As such newer website applications are adopting the use of web services/APIs which use HTTP and principles of a software architecture style known as Representational state transfer (REST), known as a RESTful Web API.

A RESTful Web API simply provides an interface for managing resources provided by a web application using the GET, POST, PUT, and DELETE methods, while supporting various data types for communication such as XML, JavaScript Object Notation (JSON), or YAML.

When you are creating a new set of resource management options in a Ruby on Rails application, it's possible to define the requests which are possible with a certain resource as a RESTful resource that can be managed via a typical web  browser interface, or as a RESTful Web API, thus killing two birds with one stone. More on this will be covered in detail in the article on Rails Routing.