Seth Schroeder

XML
20070425 Wednesday April 25, 2007
REST Network API for an online spreadsheet

Every spreadsheet application needs to support the creating, reading, updating, and deleting of sheets, columns, rows, and cells. The network protocol for an online spreadsheet could easily treat sheets, columns, etc. as resources and offer CRUD operations for manipulating them.

The requests below were hand generated and sent via telnet. The responses were copy and pasted from the console window (w/ a little pretty printing). A real frontend might use this API with XmlHttpRequest.

operation request response
Create a sheet
POST /fauxcel/finances HTTP/1.1
Host: 192.168.113.115:8080
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Length: 0
Date: Wed, 25 Apr 2007 19:26:39 GMT
    
Populate a cell
POST /fauxcel/finances/A/1 HTTP/1.1
Host: 192.168.113.115:8080
Content-Type: text/text;charset=utf-8
Content-Length: 34

{"value":"123.45", "type":"value"}
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Length: 0
Date: Wed, 25 Apr 2007 19:36:37 GMT
Insert a column
POST /fauxcel/finances/A HTTP/1.1
Host: 192.186.113.115:8080
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Length: 0
Date: Wed, 25 Apr 2007 19:36:37 GMT
Read a column
GET /fauxcel/finances/B HTTP/1.1
Host: 192.168.113.115:8080
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Transfer-Encoding: chunked
Date: Wed, 25 Apr 2007 19:39:38 GMT

53
{"name":"finances","cells": [
   {
       "col":"B",
       "row":"1",
       "type":"value",
       "value":"123.45"
   }
]}
0
Delete a row
DELETE /fauxcel/finances/1 HTTP/1.1
Host: 192.168.113.115:8080
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Length: 0
Date: Wed, 25 Apr 2007 19:41:26 GMT

Note that the back end moved the value of cell A1 into cell B1 when a column was inserted before A. More details on that in a following post!

Posted by sschroed Apr 25 2007, 04:36:00 PM EDT
20070405 Thursday April 05, 2007
REST vs. SOAP vs. POX vs. TBD I have jumped into the fray of trying to sort out REST from SOAP from POX. Here are my initial opinions: REST : Fielding's introduction [ 1 ] lays out constraints and why they are important. I was hoping the subsequent chapter [ 2 ] focusing on REST and...
Posted by sschroed Apr 05 2007, 12:57:00 PM EDT