The latest documentation is available here.
Run composer require sylius/shop-api-plugin:^1.0@beta
.
Extend config files:
// app/AppKernel.php
public function registerBundles(): array
{
return array_merge(parent::registerBundles(), [
new \Sylius\ShopApiPlugin\ShopApiPlugin(),
]);
}
- { path: '^/shop-api', priorities: ['json'], fallback_format: json, prefer_extension: true }
to fos_rest.format_listener.rules
app/config/config.yml
file and import config from Plugin.# app/config/config.yml
imports:
# ...
- { resource: "@ShopApiPlugin/Resources/config/app/config.yml" }
- { resource: "@ShopApiPlugin/Resources/config/app/sylius_mailer.yml" }
# ...
fos_rest:
# ...
format_listener:
rules:
- { path: '^/shop-api', priorities: ['json'], fallback_format: json, prefer_extension: true } # <-- Add this
- { path: '^/api', priorities: ['json', 'xml'], fallback_format: json, prefer_extension: true }
- { path: '^/', stop: true }
# app/config/config.yml
# ...
sylius_shop:
checkout_resolver:
pattern: "%sylius.security.shop_regex%/checkout/.+"
app/config/routing.yml
# app/config/routing.yml
# ...
sylius_shop_api:
resource: "@ShopApiPlugin/Resources/config/routing.yml"
sylius.security.shop_regex
parameter to exclude shop-api
prefix alsoshop_api.security.regex: "^/shop-api"
parameters:
# ...
sylius.security.shop_regex: "^/(?!admin|api/.*|api$|shop-api)[^/]++" # shop-api has been added inside the brackets
shop_api.security.regex: "^/shop-api"
# ...
security:
firewalls:
// ...
shop_api:
pattern: "%shop_api.security.regex%"
stateless: true
anonymous: true
(optional) if you have installed nelmio/NelmioCorsBundle
for Support of Cross-Origin Ajax Request,
// app/AppKernel.php
/**
* {@inheritdoc}
*/
public function registerBundles()
{
$bundles = array(
// ...
new Nelmio\CorsBundle\NelmioCorsBundle(),
// ...
);
// ...
}
# app/config/config.yml
# ...
nelmio_cors:
defaults:
allow_credentials: false
allow_origin: []
allow_headers: []
allow_methods: []
expose_headers: []
max_age: 0
hosts: []
origin_regex: false
forced_allow_origin_value: ~
paths:
'^/shop-api/':
allow_origin: ['*']
allow_headers: ['Content-Type', 'authorization']
allow_methods: ['POST', 'PUT', 'GET', 'DELETE', 'OPTIONS']
max_age: 3600
If you would like to receive serialized attributes you need to define an array of theirs codes under sylius_shop_api.included_attributes
key. E.g.
sylius_shop_api:
included_attributes:
- "MUG_MATERIAL_CODE"
By default no authorization is provided together with this bundle. But it is tested to work along with LexikJWTAuthenticationBundle In order to check example configuration check
From the test app.
The application can be tested with API Test Case. In order to run test suite execute the following commands:
$ cp tests/Application/.env.test.dist tests/Application/.env.test
$ set -a && source tests/Application/.env.test && set +a
$ (cd tests/Application && bin/console doctrine:database:create -e test)
$ (cd tests/Application && bin/console doctrine:schema:create -e test)
$ vendor/bin/phpunit
The application can be also tested with PHPSpec:
$ vendor/bin/phpspec run
If you think that you have found a security issue, please do not use the issue tracker and do not post it publicly.
Instead, all security issues must be sent to [email protected]
.
This library is officially maintained by Sylius together with the following contributors outside of the organization: