Difference between revisions of "Clients"

From BaseX Documentation
Jump to navigation Jump to search
(10 intermediate revisions by 2 users not shown)
Line 3: Line 3:
  
 
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
instance, execute database commands, perform queries, or listen to events.
+
instance, execute database commands and evaluate XQuery expressions.
  
 
Most clients provide two modes:
 
Most clients provide two modes:
Line 10: Line 10:
 
* [[Query Mode]]: defining queries, binding variables, iterative evaluation
 
* [[Query Mode]]: defining queries, binding variables, iterative evaluation
  
Currently, we offer bindings for the following programming languages:
+
Please see the [[Server Protocol]] for more information on the available commands. Currently, we offer bindings for the following programming languages:
  
 
<table width='100%'>
 
<table width='100%'>
Line 17: Line 17:
 
* [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
 +
* [https://github.com/BaseXdb/basex/tree/master/basex-api/src/main/c%23 C#], contributed by the BaseX Team and Martín Ferrari
 +
* [https://github.com/BaseXdb/basex/tree/master/basex-api/src/main/c C], contributed by the BaseX Team
 +
* [https://github.com/programaths/go-basex Golang]: contributed by Christian Baune
 +
* [https://github.com/zadean/basexerl/blob/master/src/bxe_client.erl Erlang]: contributed by Zachary Dean
 
* [https://github.com/apb2006/basex-node node.js]: contributed by Andy Bunce
 
* [https://github.com/apb2006/basex-node node.js]: contributed by Andy Bunce
 
* [https://github.com/BaseXdb/basex/tree/master/basex-api/src/main/perl Perl], contributed by the BaseX Team
 
* [https://github.com/BaseXdb/basex/tree/master/basex-api/src/main/perl Perl], contributed by the BaseX Team
 
* [https://github.com/BaseXdb/basex/tree/master/basex-api/src/main/php PHP]: updated by James Ball
 
* [https://github.com/BaseXdb/basex/tree/master/basex-api/src/main/php PHP]: updated by James Ball
* [https://github.com/BaseXdb/basex/tree/master/basex-api/src/main/python3 Python 3.x, 2.7.3]: contributed by Hiroaki Itoh
+
* [https://github.com/BaseXdb/basex/tree/master/basex-api/src/main/python Python]: contributed by Hiroaki Itoh
 
* [https://github.com/lucalianas/pyBaseX Python], using BaseX REST services: contributed by Luca Lianas
 
* [https://github.com/lucalianas/pyBaseX Python], using BaseX REST services: contributed by Luca Lianas
 +
* [https://github.com/BaseXdb/basex/tree/master/basex-api/src/main/r R]: contributed by Ben Engbers
 
* [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
  
With <b>Version 8.0</b>, authentication has changed, and some of the language
+
With <b>Version 8.0</b>, authentication has changed. Some of the language
 
bindings have not been updated yet. The update is rather trivial, though
 
bindings have not been updated yet. The update is rather trivial, though
 
([[Server_Protocol#Authentication|see here]] for more details);
 
([[Server_Protocol#Authentication|see here]] for more details);
Line 31: Line 36:
 
     <td width='50%'>'''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%23 C#], contributed by the BaseX Team
 
* [https://github.com/programaths/go-basex Golang]: contributed by Christian Baune
 
 
* [https://github.com/BaseXdb/basex/tree/7.9/basex-api/src/main/haskell Haskell]: contributed by Leo W&ouml;rteler
 
* [https://github.com/BaseXdb/basex/tree/7.9/basex-api/src/main/haskell Haskell]: contributed by Leo W&ouml;rteler
 
* [https://github.com/BaseXdb/basex/tree/7.9/basex-api/src/main/lisp Lisp]: contributed by Andy Chambers
 
* [https://github.com/BaseXdb/basex/tree/7.9/basex-api/src/main/lisp Lisp]: contributed by Andy Chambers
 
* [https://github.com/hanshuebner/simple-basex node.js]: contributed by Hans Hübner (deviating from client API)
 
* [https://github.com/hanshuebner/simple-basex node.js]: contributed by Hans Hübner (deviating from client API)
* [https://github.com/BaseXdb/basex/tree/7.9/basex-api/src/main/python Python &lt; 2.7]: improved by Arjen van Elteren
 
 
* [https://github.com/BaseXdb/basex/tree/7.9/basex-api/src/main/qt Qt]: contributed by Hendrik Strobelt
 
* [https://github.com/BaseXdb/basex/tree/7.9/basex-api/src/main/qt Qt]: contributed by Hendrik Strobelt
 
* [https://github.com/BaseXdb/basex/tree/7.9/basex-api/src/main/rebol Rebol]: contributed by Sabu Francis
 
* [https://github.com/BaseXdb/basex/tree/7.9/basex-api/src/main/rebol Rebol]: contributed by Sabu Francis
Line 54: Line 55:
 
* <code>CreateExample</code> shows how new databases can be created by using streams.
 
* <code>CreateExample</code> shows how new databases can be created by using streams.
 
* <code>AddExample</code> shows how documents can be added to a database by using streams.
 
* <code>AddExample</code> shows how documents can be added to a database by using streams.
* <code>EventExample</code> demonstrates how to watch and unwatch [[Events]].
 
  
 
=Changelog=
 
=Changelog=
Line 61: Line 61:
  
 
* Updated: cram-md5 replaced with digest authentication
 
* Updated: cram-md5 replaced with digest authentication
 
[[Category:Developer]]
 
[[Category:Server]]
 
[[Category:API]]
 
 
[[Category:Developer]]
 
[[Category:Server]]
 
[[Category:API]]
 

Revision as of 17:20, 18 April 2018

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 and evaluate XQuery expressions.

Most clients provide two modes:

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

Please see the Server Protocol for more information on the available commands. 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
  • C#, contributed by the BaseX Team and Martín Ferrari
  • C, contributed by the BaseX Team
  • Golang: contributed by Christian Baune
  • Erlang: contributed by Zachary Dean
  • node.js: contributed by Andy Bunce
  • Perl, contributed by the BaseX Team
  • PHP: updated by James Ball
  • Python: contributed by Hiroaki Itoh
  • Python, using BaseX REST services: contributed by Luca Lianas
  • R: contributed by Ben Engbers
  • Ruby, contributed by the BaseX Team

With Version 8.0, authentication has changed. Some of the language bindings have not been updated yet. The update is rather trivial, though (see here for more details); we are looking forward to your patches!

BaseX 7.x (outdated)
  • ActionScript: contributed by Manfred Knobloch
  • Haskell: contributed by Leo Wörteler
  • Lisp: contributed by Andy Chambers
  • node.js: contributed by Hans Hübner (deviating from client API)
  • 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.

Changelog

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