Skip to main content
6 of 18
deleted 3 characters in body; edited tags; edited title
Sky Sanders
  • 12.1k
  • 3
  • 32
  • 60

Soapi.JS2 : a fully relational JavaScript client library for the Stack Exchange API - beta preview

##Soapi.JS2

var ctx = new Soapi.ApiContext(apiKey);
ctx.initialize(function() {  

    // get a page of users
    ctx.official.stackApps.Users().invoke(function(users) {
        users.ForEach(function(user) {
            // get a page of each user's questions w/answers
            user.Questions().withAnswers(true).invoke(function(questions) {
                // for each of the user's questions
                questions.ForEach(function(question) {
                    // enumerate it's answers, if any
                    question.answers.ForEach(function(answer) {
                        // and get a page of the answer's owner's favorites
                        answer.owner.Favorites().invoke(function(favorites) {
                            favorites.ForEach(function(favorite) {
                                // shall I go on? ;-)
                            });
                        });
                    });
                });
            });
        });
    });
});

##About

Soapi.JS2 is being released separately from Soapi.JS as it is a completely different take on accessing the API via JavaScript.

Soapi.JS is a very lightweight library that provides full API coverage.

Soapi.JS2 takes it to 11 with a complete paradigm shift. It is a bit heavier and revolves around a fluent, relational query approach similar to that of the Soapi.CS library, providing a seamless view on the data served by the API.

###License

MIT-X11/GPL

###Download

Beta version available at http://soapi.info/Downloads/Soapi.JS2-beta-08-19-2010.zip

ChangeLog:

Soapi.JS2-alpha-08-21-2010

  • implemented ThrotteCache

Soapi.JS2-alpha-08-20-2010

  • implemented paging fully
  • implemented .total method

Soapi.JS2-alpha-08-19-2010

  • initial release

###Platform

JavaScript - Any browser that doesn't burn oil.

##Contact

code poet

##Code

Included in the alpha zip is a full coverage test suite and a rather detailed walkthrough.

###QuickStart

  • ApiContext - the root of all queries <-- start here
  • Api Coverage - how Soapi.JS2 maps to the API
  • Relational Queries - how to treat the API like a database
  • Async usage pattern - how to call and what to expect
  • Parameterization And Paging - how to get exactly what you want from the API
  • Stubs - filling placeholder objects
  • Throttling and Caching - concentrate on features, not plumbing..

###Sample Code

  • Basic Usage Example 01 - demonstrates how to retrieve related data from the api using Soapi.JS

###Reference

  • Linq.js - Soapi.JS will detect if linq.js is loaded and if found will return all results that would normally be JavaScript Array as an instance of Enumerable. Most sample code that I provide will utilize this functionality. This is highly recommended reading for anyone building non-trivial JavaScript applications.
Sky Sanders
  • 12.1k
  • 3
  • 32
  • 60