Download the PHP package megaads/apify without Composer
On this page you can find all versions of the php package megaads/apify. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download megaads/apify
More information about megaads/apify
Files in megaads/apify
Package apify
Short Description A pretty library to help developers build RESTful APIs lightly, quickly and properly even without writing code
License MIT
Homepage https://www.megaads.vn
Informations about the package apify
Apify
A pretty library to help developers build RESTful APIs lightly, quickly and properly even without writing code.
It's always easy to customize to suit any need such as defining data relationships, authorization, caching, communicating or integrating into other systems.
Features
- Serves RESTful APIs for any MySql database
- Pagination
- Sorting
- Selection
- Grouping, Having
- Filtering
- Relationships
- Metadata
- Supports Event Bus
Using Apify
- Apify client for PHP: https://github.com/megaads-vn/apify-client-php
- Use HTTP clients like Postman to invoke RESTful API calls.
- Combine with API Gateway is also recommended to build a completely development environment for microservice.
Installation
Apify is packed as a composer package. So it's installed quickly in 2 steps
-
Require the composer package
composer require megaads/apify -
Register the provider:
Megaads\Apify\ApifyServiceProvider
System requirements
- PHP: >= 5.6
- Laravel/ Lumen Framework: 5.4.*
- MySQL
- Message queue server: optional
API Overview
| HTTP Method | API URL | Description | For example |
|---|---|---|---|
| GET | /api/entity |
List all records of table that match the query | curl http://my-api.com/api/user?filters=age>20 |
| GET | /api/entity/:id |
Retrieve a record by primary key :id | curl http://my-api.com/api/user/123 |
| POST | /api/entity |
Insert a new record, bulk inserting is also avaiable | curl -X POST http://my-api.com/api/user -d '[{"username":"user1", "age":"20"},{"username":"user2", "age":"25"}]' -H "Content-Type: application/json" |
| PUT | /api/entity/:id |
Replaces existed record with new one | curl -X PUT http://my-api.com/api/user/123 -d '{"id":"123", "username":"user1", "age":"20"}' -H "Content-Type: application/json" |
| PATCH | /api/entity/:id |
Update record element by primary key | curl -X PATCH http://my-api.com/api/user/123 -d '{"age":"21"}' -H "Content-Type: application/json" |
| DELETE | /api/entity/:id |
Delete a record by primary key | curl -X DELETE http://my-api.com/api/user/123 |
| DELETE | /api/entity |
Delete bulk records that match the query | curl -X DELETE http://my-api.com/api/user?filters=age>100 |
| POST | /api/upload |
Upload a file | curl -X POST http://my-api.com/api/upload -H "Content-Type: multipart/form-data" -F "[email protected]" |
Pagination
| Parameter | Required | Default | Description |
|---|---|---|---|
| page_id | No | 0 | Page index, start at 0 |
| page_size | No | 50 | Number of rows to retrieve per page |
Sorting
Order by multiple columns using sorts parameter
Sort ascending
Sort descending
Sort by multiple columns
Selection
Select columns from the records using fields parameter. SQL aggregate functions such as COUNT, MAX, MIN, SUM, AVG, SQL aliases are also available
Group By
Group the result-set by one or more columns using groups parameter and combine with aggregate functions using Selection
Filtering
| Operator | Condition | For example |
|---|---|---|
| = | Equal to | /api/post?filters=user_id=1 |
| != | Not equal | /api/post?filters=user_id!=1 |
| > | Greater | /api/post?filters=user_id>1 |
| >= | Greater or equal | /api/post?filters=user_id>=1 |
| < | Less | /api/post?filters=user_id<1 |
| <= | Less or equal | /api/post?filters=user_id<=1 |
| ={} | In | /api/post?filters=user_id={1;2;3} |
| !={} | Not in | /api/post?filters=user_id!={1;2;3} |
| =[] | Between | /api/post?filters=user_id=[1;20] |
| !=[] | Not between | /api/post?filters=user_id!=[1;20] |
| ~ | Like | /api/post?filters=title~hello |
| !~ | Not like | /api/post?filters=title!~hello |
Apify supports filtering records based on more than one AND, NOT condition by using comma. For example:
Complex conditions that combine AND, OR and NOT will be available soon.
Scope functions
Entity conventions
Apify works by a simple mechanism, looking for a model class that correspond to the API entity, otherwise the API entity will be matched to a suitable DB table. That means no model class is required to create, do it only in the case of defining relationships, customizing.
So API entity name should follow one of the conventions:
-
The API entity name is the same as a model class name
-
Or the API entity name in
snake_casethat correspond to a model class with the name inCamelCase - Or the API entity name is the same as a DB table name
Relationships
Apify is packed into a Laravel/ Lumen package so relationships also are defined as methods on Eloquent model classes.
See Laravel docs for details: https://laravel.com/docs/5.6/eloquent-relationships
Let's consider the following relationship definations:
-
A
Nationhas manyCity(one-to-many relationship) - A
Citybelongs to aNation(many-to-one relationship) -
A
Cityhas manyDistrict(one-to-many relationship) - A
Districtbelongs to aCity(many-to-one relationship)
Selection on relationships
Apify provides the ability to embed relational data into the results using embeds parameter
For example
Even nested relationships
Filtering on relationships
Metric
metric=get (by default): Retrieve all records that match the query
or
Response format
metric=first: Retrieve the first record that matchs the query
Response format
metric=count: Retrieve the number of records that match the query
Response format
metric=increment/ decrement: Provides convenient methods for incrementing or decrementing the value of a selected column
Response format
Event Bus
Is being updated ...
.env configurations
| Key | Default value | Description | |
|---|---|---|---|
| APIFY_PREFIX_URL | api |
API URL prefix | |
| APIFY_MODEL_NAMESPACE | App\Models |
Models namespace | |
| APIFY_UPLOAD_PATH | /home/upload |
Upload path | |
| APIFY_MQ_ENABLE | false |
Enable / Disable Message queue (Event Bus) | |
| APIFY_MQ_HOST | Message queue server host | ||
| APIFY_MQ_PORT | Message queue server port | ||
| APIFY_MQ_USERNAME | Message queue authentication - username | ||
| APIFY_MQ_PASSWORD | Message queue authentication - password | ||
| APIFY_MQ_EXCHANGE | apify |
Message queue exchange name |
Authenticate Apify & authorize Apify?
Read docs here : https://github.com/megaads-vn/apify/blob/master/README-AUTH.md
License
The Apify is open-sourced software licensed under the MIT license
Contact us/ Instant feedback
Email: [email protected]
Skype: phult.bk
If you find a bug, please report it here on Github.