holydev/anyrest

AnyRest query language

Installs: 791

Dependents: 0

Suggesters: 0

Security: 0

Type:rest-comonent

v1.0.10 2021-10-01 17:21 UTC

This package is not auto-updated.

Last update: 2025-08-30 12:18:26 UTC


README

REST API Query interface The easiest way to implement unified REST interface instead of GraphQL

Doc request

Index

GET /any/doc

GET /any/docmd

GET /any/dochtml

Object

GET /any/doc?object=[objectName]

GET /any/docmd?object=[objectName]

GET /any/dochtml?object=[objectName]

Request format summary

{
  "get": {
    "tableName1": {
      "filter": {"field1":  "value1"},
      "limit": 0,
      "offset": 0,
      "fields": [
        "fieldName1", 
        "fieldName2", 
        "fieldName3"
      ]    
    },
    "tableName2": {
      "filter": {"field1":  "value1"},
      "fields": ["fieldName1", "fieldName2", {"object1" : ["fieldName1", "fieldName2"]}]    
    },  
    "tableName3": {
      "filter": {"field1":  "value1"},
      "fields": ["*", {"object1" : "*"}]    
    }  
  },
  "put": {
    "tableName1": {
      "id": 123,
      "return": ["fieldName1"],
      "values": {
        "fieldName1" : "value1", 
        "fieldName2" : "value2"
      }    
    }
  },
  "count": {
    "tableName1": {
      "filter": {"field1":  "value1"}
    }  
  },
  "del": {
    "tableName1": {
      "id": 123
    }
  },
  "meta": {
    "tableName1": {}  
  }
}

GET query options

  • filter - search filter "key":value

  • limit - Records per request int

  • offset - Records from begin int

  • sort - Sorting field

  • fields - list of fields

    "*" - return all fields of requested object (without relations) {"object1":"*"} - return all fields of inherited relation

[fieldName]

GET example

query

{
    "get": {
        "company": {
            "filter": {"id":2},
            "fields": ["id", "name", "statusId", "createdAt"]
        },
        "user": {
            "filter": {"id":1},
            "fields":["id", "username"]
        }
    }
}

response

{
    "get": {
        "company": [{
            "id": 2,
            "name": "newName",
            "statusId": 1,
            "createdAt": 1625616000
        }],
        "user": [{
            "id": 1,
            "username": "admin"
        }]
    }
}

PUT example

query

{
    "put": {
        "company": {
            "return": ["id"],
            "values": {"name" : "New item name"}
        }
    }
}

response

{
  "put": {
    "company": {
      "id": 3
    }
  }
}

DEL example

query

{
    "del": {
        "company": {
            "id": 123        
        }
    }
}

response

{
  "del": {
    "company": {}
  }
}

COUNT example

query

{
    "count": {
        "company": {}
    }
}

response

{
  "count": {
    "company": 1121
  }
}

META example

query

{
    "meta": {
        "company": {}
    }
}

response

{
  "meta": {
       "company": {
            "description": "Some table description",
            "labels": {
                "id": "ID",
                "name": "Name",
                "createdAt": "Creation datetime",
                "updatedAt": "Last update datetime"
            },
            "types": {
                "id": "integer",
                "name": "string",
                "createdAt": "integer",
                "updatedAt": "integer"
            },
            "sizes": {
                "id": null,
                "name": null,
                "createdAt": null,
                "updatedAt": null
            },
            "precisions": {
                "id": 32,
                "name": null,
                "createdAt": 32,
                "updatedAt": 32
            },
            "scales": {
                "id": 0,
                "name": null,
                "createdAt": 0,
                "updatedAt": 0
            }
      }
  }
}