Difference between revisions of "Clients"

From BaseX Documentation
Jump to navigation Jump to search
Line 1: Line 1:
 
This page is part of the [[Developer Section]]. It describes how to communicate with BaseX
 
This page is part of the [[Developer Section]]. It describes how to communicate with BaseX
 
from other programming languages.
 
from other programming languages.
 
{{Mark|Please note that with Version 8.0}}, we have switched from cram-md5 to digest authentication.
 
If a language binding does not work anymore, it will need to be slightly updated.
 
Please have a look at our [[Server Protocol]] for more information on the exchanged bytes.
 
Your contributions are welcome!
 
  
 
You can use the following light-weight language bindings to connect to a running BaseX server
 
You can use the following light-weight language bindings to connect to a running BaseX server
Line 19: Line 14:
 
<table width='100%'>
 
<table width='100%'>
 
   <tr>
 
   <tr>
     <td>'''BaseX 7.x, BaseX 8.x and later'''
+
     <td width='50%'>'''BaseX 7.x, BaseX 8.x and later'''
 
* [https://github.com/BaseXdb/basex/tree/master/basex-examples/src/main/java/org/basex/examples/api Java]: The default implementation
 
* [https://github.com/BaseXdb/basex/tree/master/basex-examples/src/main/java/org/basex/examples/api Java]: The default implementation
 
* [https://github.com/JohnLeM/BasexCPPAPI/ C++]: contributed by Jean-Marc Mercier
 
* [https://github.com/JohnLeM/BasexCPPAPI/ C++]: contributed by Jean-Marc Mercier
Line 29: Line 24:
 
* [https://github.com/BaseXdb/basex/tree/master/basex-api/src/main/ruby Ruby], contributed by the BaseX Team
 
* [https://github.com/BaseXdb/basex/tree/master/basex-api/src/main/ruby Ruby], contributed by the BaseX Team
  
...more to come (your contributions are welcome!)
+
With Version 8.0, we have switched from cram-md5 to digest authentication.
 +
Some of the language bindings have not been updated yet. The update is rather
 +
trivial, though ([[Server_Protocol#Authentication|see here]] for more details),
 +
and your contributions are welcome!
 
     </td>
 
     </td>
     <td>'''BaseX 7.x''' (outdated)
+
     <td width='50%'>'''BaseX 7.x''' (outdated)
 
* [https://github.com/BaseXdb/basex/tree/7.9/basex-api/src/main/as ActionScript]: contributed by Manfred Knobloch
 
* [https://github.com/BaseXdb/basex/tree/7.9/basex-api/src/main/as ActionScript]: contributed by Manfred Knobloch
 
* [https://github.com/BaseXdb/basex/tree/7.9/basex-api/src/main/c C], contributed by the BaseX Team
 
* [https://github.com/BaseXdb/basex/tree/7.9/basex-api/src/main/c C], contributed by the BaseX Team

Revision as of 19:03, 16 February 2015

This page is part of the Developer Section. It describes how to communicate with BaseX from other programming languages.

You can use the following light-weight language bindings to connect to a running BaseX server instance, execute database commands, perform queries, or listen to events.

Most clients provide two modes:

  • Standard Mode: connecting to a server, sending commands
  • Query Mode: defining queries, binding variables, iterative evaluation

Currently, we offer bindings for the following programming languages:

BaseX 7.x, BaseX 8.x and later
  • Java: The default implementation
  • C++: contributed by Jean-Marc Mercier
  • node.js: contributed by Andy Bunce
  • Perl, contributed by the BaseX Team
  • PHP: updated by James Ball
  • Python 3.x, 2.7.3: contributed by Hiroaki Itoh
  • Python, using BaseX REST services: contributed by Luca Lianas
  • Ruby, contributed by the BaseX Team

With Version 8.0, we have switched from cram-md5 to digest authentication. Some of the language bindings have not been updated yet. The update is rather trivial, though (see here for more details), and your contributions are welcome!

BaseX 7.x (outdated)
  • ActionScript: contributed by Manfred Knobloch
  • C, contributed by the BaseX Team
  • C#, contributed by the BaseX Team
  • Golang: contributed by Christian Baune
  • Haskell: contributed by Leo Wörteler
  • Lisp: contributed by Andy Chambers
  • node.js: contributed by Hans Hübner (deviating from client API)
  • Python < 2.7: improved by Arjen van Elteren
  • Qt: contributed by Hendrik Strobelt
  • Rebol: contributed by Sabu Francis
  • Scala: contributed by Manuel Bernhardt
  • Scala (simple implementation)
  • VB, contributed by the BaseX Team

Many of the interfaces contain the following files:

  • BaseXClient contains the code for creating a session, sending and executing commands and receiving results. An inner Query class facilitates the binding of external variables and iterative query evaluation.
  • Example demonstrates how to send database commands.
  • QueryExample shows you how to evaluate queries in an iterative manner.
  • QueryBindExample shows you how to bind a variable to your query and evaluates the query in an iterative manner.
  • CreateExample shows how new databases can be created by using streams.
  • AddExample shows how documents can be added to a database by using streams.
  • EventExample demonstrates how to watch and unwatch Events.

Changelog

Version 8.0
  • Updated: cram-md5 replaced with digest authentication