InputParam is now abstract class and all types have their own classes. Also InputParam is more like Nette Form inputs with fluent API.
Examples of replacements:
Required GET input with available values:
Old:
new InputParam(InputParam::TYPE_GET, 'status', InputParam::REQUIRED, ['ok', 'error'])
New:
(new GetInputParam('status'))->setRequired()->setAvailableValues(['ok', 'error'])
Multiple optional FILE input:
Old:
new InputParam(InputParam::TYPE_FILE, 'myfile', InputParam::OPTIONAL, null, true)
New:
(new FileInputParam('myfile'))->setMulti()
For more info about types, see readme section Input Types.
New version does not support PHP versions 5.6 and 7.0 and also hhvm. Please use it with newer versions of PHP (>7.1)
Version 2.0.0 requires nette packages in version 3.0, so probably you will have to upgrade whole nette application.
There are some breaking changes because of added typehints:
Add typehints to methods:
authorized(): bool
getErrorMessage(): ?string
Add typehints to methods:
params(): array
handle(array $params): Tomaj\NetteApi\Response\ResponseInterface
Add typehints to method:
log(int $responseCode, string $requestMethod, string $requestHeader, string $requestUri, string $requestIp, string $requestAgent, int $responseTime): bool
Add typehints to methods:
validToken(string $token): bool
ipRestrictions(string $token): ?string
Add typehints to method:
getRequestIp(): string
Add typehints to methods:
isValid(): bool
getKey(): string
Add typehints to methods:
getMethod(): string
getVersion(): int
getPackage(): string
getApiAction(): ?string
getUrl(): string
API handler tripplet (array of endpoint, handler, authorization) has been changed to class Api
which has methods getEndpoint()
, getHandler()
and getAuthorization()
.
Few methods have been renamed, please use their new versions:
ApiDecider::addApiHandler()
->ApiDecider::addApi()
ApiDecider::getApiHandler()
->ApiDecider::getApi()
ApiDecider::getHandlers()
->ApiDecider::getApis()
BaseHandler now have few final methods:
setEndpointIdentifier
getEndpoint
setupLinkGenerator
createLink
Class ApiResponse has been removed. Use JsonApiResponse instead.
Parameters $parent and $name have been removed from ApiListingControl. New usage is:
new ApiListingControl($apiDecider)
Some parameters were strictly typed:
- second parameter in
JsonApiResponse::__construct
($payload
formerly known as$data
) is nowarray
- fifth parameter in
JsonApiResponse::__construct
($expiration
) is nowDateTimeInteface
ornull
- fourth parameter in
InputParam::__construct
($availableValues
, now parameter of methodsetAvailableValues()
) is nowarray
Registration of event onClick in ApiListingControl has been changed. Use:
$apiListing->onClick[] = function ($method, $version, $package, $apiAction) {
...
};
With new version of Nette API you can:
- add description to your API handlers, also you can mark some handlers as deprecated and add tags for them.
- add description, default value and example for all your input params.
- add list of possible outputs which are validate before response is sent to user. If output is not valid, error is sent.