Default routes have changed to:
/[json/xml/jsv/csv/form]/[requestreply/oneway]/[operation name]
The REST routes (AsyncRestHandler) and the SOAP handler (AsyncSoapHandler) are using IHttpAsyncHandler to process requests.
| { | |
| "homepage": "http://apex.run/", | |
| "license": "MIT", | |
| "version": "0.7.3", | |
| "architecture": { | |
| "32bit": { | |
| "url": "https://github.com/apex/apex/releases/download/v0.7.3/apex_windows_386.exe" | |
| }, | |
| "64bit": { | |
| "url": "https://github.com/apex/apex/releases/download/v0.7.3/apex_windows_amd64.exe" |
| set shell=/bin/bash | |
| set nocompatible " be iMproved | |
| filetype off " required! | |
| set rtp+=~/.vim/bundle/vundle/ | |
| call vundle#rc() | |
| " let Vundle manage Vundle | |
| " required! | |
| Bundle 'gmarik/vundle' |
| describe 'User Administration', () -> | |
| it 'Get user', req -> | |
| req.get '/users' | |
| .expectStatus 200 | |
| .expectJSONTypes | |
| id: Number, | |
| username: String, | |
| is_admin: Boolean | |
| .expectJSON |
| public interface IValitated | |
| { | |
| Dictionary<string, Func<string>> Validators { get; set; } | |
| } | |
| public class ValidatedReactiveObject : ReactiveObject, IValitated, IDataErrorInfo | |
| { | |
| public Dictionary<string, Func<string>> Validators { get; set; } | |
| public ValidatedReactiveObject() |
| namespace ServiceStack.Service | |
| { | |
| using System; | |
| using System.Collections.Concurrent; | |
| using System.Collections.Generic; | |
| using System.Linq; | |
| using ServiceStack.Service; | |
| using ServiceStack.ServiceClient.Web; | |
| using ServiceStack.ServiceHost; |
Default routes have changed to:
/[json/xml/jsv/csv/form]/[requestreply/oneway]/[operation name]
The REST routes (AsyncRestHandler) and the SOAP handler (AsyncSoapHandler) are using IHttpAsyncHandler to process requests.
public IAsyncService<TReq>
{
Task<object> ExecuteAsync<TReq>(TReq req);
}public class ServiceBase<TReq> : IAsyncService<TReq>
{Although it's been a long time between formal releases - v3.78 marks our been our biggest release ever! Mostly of a result of being too busy to prepare the release notes for all the effort that have gone into the framework (and supporting libraries) in the last 6 months :)
Today we hope to rectify this neglect with a special thanks to all the contributors that helped make this release possible. We would like to pay a special thanks to Steffen Müller @arxisos whose code and documentation contributions and support in the forums and real-time help over these last 6 months have been invaluable.
A lot of features being announced are already well known to our active user-base as they've shipped in our production release builds for months. Hopefully these notes will highlight other useful but less known features.
| // Async with 200 ms timeout | |
| ahall@jetsam:~$ ab -c 5 -n 2000 "http://127.0.0.1:53211/async?format=json" | |
| This is ApacheBench, Version 2.3 <$Revision: 655654 $> | |
| Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ | |
| Licensed to The Apache Software Foundation, http://www.apache.org/ | |
| Benchmarking 127.0.0.1 (be patient) | |
| Completed 200 requests | |
| Completed 400 requests | |
| Completed 600 requests |
| public class TweetsService : RestServiceBase<Tweets> | |
| { | |
| public ICacheClient Cache { get; set; } | |
| public object OnGet(Tweets request) | |
| { | |
| var tweets = this.Cache.Get<List<Tweets>>("yourkey"); | |
| if(tweets == null) | |
| { | |
| tweets = LoadTweetsFromExternalService(); |