fsdb_rest_api
plantdb.server.cli.fsdb_rest_api Link
FSDB REST API - Serve Plant Database through RESTful Endpoints
This module provides a RESTful API server for interacting with a local plant database (FSDB). It is designed for the ROMI project and facilitates efficient data handling and retrieval of plant-related datasets. The server enables users to query and manage plant scans, images, point clouds, and other related data files.
Key Features
- Serve a local plant database (FSDB) through RESTful API endpoints.
- Manage plant scans and related data, including images, point clouds, and meshes.
- Retrieve and manage dataset files with various configurations.
- Run in test mode with optional preconfigured datasets or an empty test database.
- Lightweight server setup using Flask, with options for debugging and CORS support.
Environment Variables
ROMI_DB: Path to the directory containing the FSDB. Default: '/myapp/db' (container)PLANTDB_API_PREFIX: Prefix for the REST API URL. Default is empty.PLANTDB_API_SSL: Enable SSL to use an HTTPS scheme. Default isFalse.FLASK_SECRET_KEY: The secret key to use with flask. Default to random (32 bits secret).JWT_SECRET_KEY: The secret key to use with JWT token generator. Default to random (32 bits secret).
Usage Examples
To start the REST API server for a local plant database:
python fsdb_rest_api.py --db_location /path/to/your/database --host 127.0.0.1 --port 8080 --debug
To run the server with a temporary test database in debug mode:
python fsdb_rest_api.py --test --debug
RESTful endpoints include:
- /scans: List all scans available in the database.
- /files/<path:path>: Retrieve files from the database.
- /image/<scan_id>/<fileset_id>/<file_id>: Access specific images.
- /pointcloud/<scan_id>/<fileset_id>/<file_id>: Access specific point clouds.
- /mesh/<scan_id>/<fileset_id>/<file_id>: Retrieve related meshes.
For detailed command-line parameters, use the --help flag:
python fsdb_rest_api.py --help
main Link
main()
Entry point for the REST API server.
Parses command line arguments, builds the Flask application, and starts the development server with the supplied host/port and debug settings.
Source code in plantdb/server/cli/fsdb_rest_api.py
525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 | |
parsing Link
parsing()
Create and configure an argument parser for a REST API server.
Returns:
| Type | Description |
|---|---|
ArgumentParser
|
The configured argument parser capable of parsing and retrieving command-line arguments. |
Source code in plantdb/server/cli/fsdb_rest_api.py
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 | |
rest_api Link
rest_api(db_path, proxy=False, url_prefix='', ssl=False, log_level=DEFAULT_LOG_LEVEL, test=False, empty=False, models=False)
Initialize and configure a RESTful API server for Plant Database querying.
This function sets up a Flask application with various RESTful endpoints to enable interaction with a local Plant Database (FSDB). RESTful routes are added for managing and retrieving various datasets and configurations, providing an interface for working with plant scans and related files. The application can be run in test mode with optional configurations for using sample datasets.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
db_path
|
str or Path or None
|
The path to the local plant database to be served. If set to "/none", the server will raise
an error and terminate unless the path is appropriately overridden in test mode.
If |
required |
proxy
|
bool
|
Boolean flag indicating whether the application is behind a reverse proxy, |
False
|
url_prefix
|
str
|
Prefix for all endpoints, by default "" |
''
|
log_level
|
str
|
The logging level to use for the application. Defaults to |
DEFAULT_LOG_LEVEL
|
test
|
bool
|
A boolean flag to specify if the application should run in test mode. When enabled, a test
database will be instantiated with sample datasets or an empty configuration if specified.
Defaults to |
False
|
empty
|
bool
|
A boolean flag to specify whether the test database should be instantiated without any
datasets or configurations. Defaults to |
False
|
models
|
bool
|
A boolean flag to specify whether the test database should be populated with trained CNN models.
Defaults to |
False
|
Source code in plantdb/server/cli/fsdb_rest_api.py
440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 | |