Difference between revisions of "Clients"

From BaseX Documentation
Jump to navigation Jump to search
Line 19: Line 19:
 
<table width='100%'>
 
<table width='100%'>
 
   <tr>
 
   <tr>
     <td>'''BaseX 8.0 and later'''
+
     <td>'''BaseX 7.x, BaseX 8.x and later'''
; Object oriented:
+
* [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/apb2006/basex-node node.js]: contributed by Andy Bunce
; Scripting
+
* [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/python3 Python 3.x, 2.7.3]: contributed by Hiroaki Itoh
 
  
 
...more to come (your contributions are welcome!)
 
...more to come (your contributions are welcome!)
 
     </td>
 
     </td>
 
     <td>'''BaseX 7.x''' (obsolete)
 
     <td>'''BaseX 7.x''' (obsolete)
; Object oriented:
+
* [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-examples/src/main/java/org/basex/examples/api Java]: The default implementation
+
* [https://github.com/BaseXdb/basex/tree/7.9/basex-api/src/main/c C]
: [https://github.com/BaseXdb/basex/tree/7.9/basex-api/src/main/c%23 C#], [https://github.com/BaseXdb/basex/tree/master/basex-api/src/main/vb VB], [https://github.com/BaseXdb/basex/tree/7.9/basex-api/src/main/scala Scala]
+
* [https://github.com/BaseXdb/basex/tree/7.9/basex-api/src/main/c%23 C#]
: [https://github.com/delving/basex-scala-client Scala]: contributed by Manuel Bernhardt
+
* [https://github.com/programaths/go-basex Golang]: contributed by Christian Baune
: [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/haskell Haskell]: contributed by Leo W&ouml;rteler
; Scripting
+
* [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/perl Perl]
+
* [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/php PHP]: updated by James Ball
+
* [https://github.com/BaseXdb/basex/tree/7.9/basex-api/src/main/perl Perl]
: [https://github.com/BaseXdb/basex/tree/7.9/basex-api/src/main/python3 Python 3.x, 2.7.3]: contributed by Hiroaki Itoh
+
* [https://github.com/BaseXdb/basex/tree/7.9/basex-api/src/main/php PHP]: updated by James Ball
: [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/python Python &lt; 2.7]: improved by Arjen van Elteren
: [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/qt Qt]: contributed by Hendrik Strobelt
: [https://github.com/BaseXdb/basex/tree/7.9/basex-api/src/main/ruby Ruby]
+
* [https://github.com/BaseXdb/basex/tree/7.9/basex-api/src/main/rebol Rebol]: contributed by Sabu Francis
; Functional:
+
* [https://github.com/BaseXdb/basex/tree/7.9/basex-api/src/main/ruby Ruby]
: [https://github.com/BaseXdb/basex/tree/7.9/basex-api/src/main/haskell Haskell]: contributed by Leo W&ouml;rteler
+
* [https://github.com/delving/basex-scala-client Scala]: contributed by Manuel Bernhardt
: [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/scala Scala] (simple implementation)
; Others:
+
* [https://github.com/BaseXdb/basex/tree/master/basex-api/src/main/vb VB]
: [https://github.com/apb2006/basex-node node.js]: contributed by Andy Bunce
 
: [https://github.com/hanshuebner/simple-basex node.js]: contributed by Hans Hübner (deviating from client API)
 
: [https://github.com/programaths/go-basex Golang]: contributed by Christian Baune
 
: [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/c C]
 
 
     </td>
 
     </td>
 
   </tr>
 
   </tr>

Revision as of 12:54, 30 January 2015

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

Template:Mark, 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 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

...more to come (your contributions are welcome!)

BaseX 7.x (obsolete)
  • ActionScript: contributed by Manfred Knobloch
  • C
  • C#
  • 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)
  • Perl
  • PHP: updated by James Ball
  • Python < 2.7: improved by Arjen van Elteren
  • Qt: contributed by Hendrik Strobelt
  • Rebol: contributed by Sabu Francis
  • Ruby
  • Scala: contributed by Manuel Bernhardt
  • Scala (simple implementation)
  • VB

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