Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pgrest/pgrest
enable REST in postgres
https://github.com/pgrest/pgrest
Last synced: about 1 month ago
JSON representation
enable REST in postgres
- Host: GitHub
- URL: https://github.com/pgrest/pgrest
- Owner: pgrest
- License: other
- Created: 2013-02-06T04:38:51.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2016-08-31T15:15:54.000Z (over 8 years ago)
- Last Synced: 2024-10-30T02:56:30.816Z (about 1 month ago)
- Language: LiveScript
- Size: 1.49 MB
- Stars: 425
- Watchers: 38
- Forks: 24
- Open Issues: 39
-
Metadata Files:
- Readme: README.md
- Changelog: History.md
- License: LICENSE
Awesome Lists containing this project
- awesome-starred - pgrest/pgrest - enable REST in postgres (others)
README
pgrest
======[![Build Status](https://travis-ci.org/pgrest/pgrest.png?branch=master)](https://travis-ci.org/clkao/pgrest)
WARNING: This is work in progress. The APIs will remain in flux until 1.0.0. Suggestions welcome!
# PgREST is...
* a JSON document store
* running inside PostgreSQL
* working with existing relational data
* capable of loading Node.js modules
* compatible with MongoLab's REST API
* and Firebase's real-time API!Want to learn more? Check out our homepage at [pgre.st](http://pgre.st/) and the [wiki](https://github.com/clkao/pgrest/wiki).
# Installation
PostgreSQL 9.0 is required; we recommend using 9.2 or later, and nodejs `0.10.x`.
You need to install the `plv8js` extension for PostgreSQL. If you're on OS X, [Postgres.app](http://postgresapp.com) comes with it pre-installed. Otherwise, see [Installation](https://github.com/clkao/pgrest/wiki/Installation) for details.
After you install, create the `plv8` extension
psql -U -c "create extension plv8"
If you got error message `Reason: image not found`
Please download the version after version `9.2.4.3`
[PostgresApp release notes](https://github.com/PostgresApp/PostgresApp/releases)
Once the extension is installed, simply use `npm` to install pgrest:
% npm i -g pgrest
When installing from git checkout, make sure you do `npm i` before `npm i -g .`
# Trying pgrest:
% psql test
test=# CREATE TABLE foo (_id int, info json, tags text[]);
CREATE TABLE
test=# INSERT INTO foo VALUES (1, '{"f1":1,"f2":true,"f3":"Hi I''m \"Daisy\""}', '{foo,bar}');
INSERT 0 1% pgrest --db test
Serving `test` on http://127.0.0.1:3000/collectionsYou can now access foo content at `http://127.0.0.1:3000/collections/foo`
## Reading:
curl http://127.0.0.1:3000/collections/foo/1
curl -g 'http://127.0.0.1:3000/collections/foo?q={"_id":1}'
curl -g 'http://127.0.0.1:3000/collections/foo?q={"tags":{"$contains":"foo"}}'The parameter is similar to [MongoLab's REST API](http://docs.mongolab.com/restapi/) for listing documents.
Note that if you use `curl`, you should probably use `-g` to prevent curl from expanding `{}`.
## Writing:
echo '{"_id": 5,"info": {"counter":5} }' | curl -D - -H 'Content-Type: application/json' -X POST -d @- http://localhost:3000/collections/foo
# Developing
## Runing tests:
```
createdb test
export TESTDBUSERNAME=postgres # optional
export TESTDBNAME=test
npm i
npm run test
```# Additional web server support
In addition to the bundled `pgrest` frontend, you can also use the following frontend:
* Perl: [Plack::App::PgREST](https://github.com/clkao/Plack-App-PgREST)
* Using `ngx_postgres` (experimental)