Rest service and client in DART
The DART language looks like a promising way to write rich clients in a high level language. I have been looking at DART and the Ruby to JavaScript compiler Opal as possible (but not likely) substitutes for Clojurescript with Clojure back ends.
It took me a little while to get a simple REST service and client working in development mode inside the DART IDE. The following code snippets might save you some time. Here is a simple service that returns some JSON data:
import 'dart:io'; import 'dart:json' as JSON; main() { var port = 8080; HttpServer.bind('localhost', port).then((HttpServer server) { print('Server started on port: ${port}'); server.listen((HttpRequest request) { var resp = JSON.stringify({ 'name': 'Mark', 'hobby': 'hiking'} ); request.response..headers.set(HttpHeaders.CONTENT_TYPE, 'application/json'); request.response..headers.set('Access-Control-Allow-Origin','*'); request.response..headers..write(resp)..close(); }); }); }It is required to set Access-Control-Allow-Origin. Here is the client code (I am not showing the HTML stub that loads the client):
import 'dart:html'; import 'dart:json'; void main() { // call the web server asynchronously var request = HttpRequest.getString("http://localhost:8080/") .then(onDataLoaded); } void onDataLoaded(String responseText) { var jsonString = responseText; print(jsonString); Map map = parse(jsonString); var name = map["name"]; var hobby = map["hobby"]; query("#sample_text_id").text = "My name is $name and my hobby is $hobby"; }The call to query(…) is similar to a jQuery call. As you might guess, “#sample_text_id” refers to a DOM element from the HTML page with this ID. DART on the client side seems to be very well supported both with components and tooling. I think that DART on the server side is still a work in progress but looks very promising.
I'll try this out, thanks
ReplyDelete