Download the PHP package silverstripe/restfulserver without Composer
On this page you can find all versions of the php package silverstripe/restfulserver. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download silverstripe/restfulserver
More information about silverstripe/restfulserver
Files in silverstripe/restfulserver
Package restfulserver
Short Description Add a RESTful API to your SilverStripe application
License BSD-3-Clause
Informations about the package restfulserver
Silverstripe RestfulServer Module
Installation
Overview
This class gives your application a RESTful API. All you have to do is set the api_access
configuration option to true
on the appropriate DataObjects. You will need to ensure that all of your data manipulation and security is defined in
your model layer (ie, the DataObject classes) and not in your Controllers. This is the recommended design for SilverStripe
applications.
Configuration
Example DataObject with simple API access, giving full access to all object properties and relations, unless explicitly controlled through model permissions.
Example DataObject with advanced API access, limiting viewing and editing to Title attribute only:
Example DataObject field mapping, allows aliasing fields so that public requests and responses display different field names:
Given a dataobject with values:
which when requesting with the url /api/v1/Vendor-Project-Article/12?fields=customTitle,Content
and Accept: application/json
the response will look like:
Similarly, PUT
or POST
requests will have fields transformed from the alias name to the DB field name.
Supported operations
GET /api/v1/(ClassName)/(ID)
- gets a database recordGET /api/v1/(ClassName)/(ID)/(Relation)
- get all of the records linked to this database record by the given reatlionGET /api/v1/(ClassName)?(Field)=(Val)&(Field)=(Val)
- searches for matching database recordsPOST /api/v1/(ClassName)
- create a new database recordPUT /api/v1/(ClassName)/(ID)
- updates a database recordPUT /api/v1/(ClassName)/(ID)/(Relation)
- updates a relation, replacing the existing record(s) (NOT IMPLEMENTED YET)-
POST /api/v1/(ClassName)/(ID)/(Relation)
- updates a relation, appending to the existing record(s) (NOT IMPLEMENTED YET) DELETE /api/v1/(ClassName)/(ID)
- deletes a database record (NOT IMPLEMENTED YET)DELETE /api/v1/(ClassName)/(ID)/(Relation)/(ForeignID)
- remove the relationship between two database records, but don't actually delete the foreign object (NOT IMPLEMENTED YET)POST /api/v1/(ClassName)/(ID)/(MethodName)
- executes a method on the given object (e.g, publish)
Search
You can trigger searches based on the fields specified on DataObject::searchable_fields
and passed
through DataObject::getDefaultSearchContext()
. Just add a key-value pair with the search-term
to the url, e.g. /api/v1/(ClassName)/?Title=mytitle.
Other url-modifiers
&limit=<numeric>
: Limit the result set&relationdepth=<numeric>
: Displays links to existing has-one and has-many relationships to a certain depth (Default: 1)&fields=<string>
: Comma-separated list of fields on the output object (defaults to all database-columns). Handy to limit output for bandwidth and performance reasons.&sort=<myfield>&dir=<asc|desc>
&add_fields=<string>
: Comma-separated list of additional fields, for example dynamic getters.
Access control
Access control is implemented through the usual Member system with BasicAuth authentication only. By default, you have to bear the ADMIN permission to retrieve or send any data. You should override the following built-in methods to customize permission control on a class- and object-level:
DataObject::canView()
DataObject::canEdit()
DataObject::canDelete()
DataObject::canCreate()
See SilverStripe\ORM\DataObject
documentation for further details.
You can specify the character-encoding for any input on the HTTP Content-Type. At the moment, only UTF-8 is supported. All output is made in UTF-8 regardless of Accept headers.