servicestack-client

This library contains the Typed ServiceStack Client library that is an idiomatic port of ServiceStack's
ss-utils.js JavaScript Client
in native TypeScript. It provides integration with many ServiceStack features
including TypeScript Add ServiceStack Reference
and Server Events.
Isomorphic Fetch
It contains a clean "jQuery-free" implementation based on JavaScript's new
Fetch API standard,
utilizing the isomorphic-fetch implementation
so it can be used in both JavaScript client web apps as well as node.js server projects.
Install
This package is pre-configured in all ServiceStackVS TypeScript VS.NET Templates
Other TypeScript or ES6 projects can install servicestack-client
with:
jspm install servicestack-client
node server projects can instead install it with:
npm install servicestack-client --save
Then fetch the Type Definitions for either project type with:
typings install servicestack-client --save
typings install dt~isomorphic-fetch --global --save
Ideal Typed Message-based API
The TypeScript JsonServiceClient
enables the same productive, typed API development experience available
in ServiceStack's other 1st-class supported client platforms.
The JsonServiceClient
leverages the additional type hints ServiceStack embeds in each TypeScript Request DTO
to achieve the ideal typed, message-based API - so all API requests benefit from a succinct, boilerplate-free
Typed API.
Here's a quick look at what it looks like. The example below shows how to create a
C# Gist in Gislyn
after adding a TypeScript ServiceStack Reference
to gistlyn.com
and installing the servicestack-client
npm package:
import { JsonServiceClient } from 'servicestack-client';
import { StoreGist, GithubFile } from './Gistlyn.dtos';
var client = new JsonServiceClient("http://gistlyn.com");
var request = new StoreGist();
var file = new GithubFile();
file.filename = "main.cs";
file.content = 'var greeting = "Hi, from TypeScript!";';
request.files = { [file.filename]: file };
client.post(request)
.then(r => {
console.log(`New C# Gist was created with id: ${r.gist}`);
location.href = `http://gistlyn.com?gist=${r.gist}`;
})
.catch(e => {
console.log("Failed to create Gist: ", e.responseStatus);
});
Where the r
param in the returned then()
Promise callback is typed to StoreGistResponse
DTO Type.
ServerEventsClient
In addition to JsonServiceClient
this package contains most of the JavaScript utils in
ss-utils.js,
including the new ServerEventsClient
which gistlyn.com uses to process real-time
Server Events from the executing C# Gist with:
const channels = ["gist"];
const sse = new ServerEventsClient("/", channels, {
handlers: {
onConnect(activeSub:ISseConnect) {
store.dispatch({ type: 'SSE_CONNECT', activeSub });
fetch("/session-to-token", {
method:"POST", credentials:"include"
});
},
ConsoleMessage(m, e) {
batchLogs.queue({ msg: m.message });
},
ScriptExecutionResult(m:ScriptExecutionResult, e) {
}
}
});