Contributte / API

Milan Šulc

f3l1x

Contributte

github.com/contributte

@contributte

Contributte

  • Nette contrib
  • Symfony
  • PSR
  • Other

Contributte > Nette contrib

  • application (on-the-fly)
  • bootstrap [NETTE__]
  • cache (factory)
  • database (nested transactions)
  • di (autoload)
  • forms (factory)
  • latte (macros)
  • mail (file, composite mailer)
  • http (curl, basic-auth, sapi)
  • security (authenticators)
  • utils (extra utils)

Contributte > Symfony

  • console
  • console commands (Q2/2018)
  • event-dispatcher
  • event-dispatcher bridges
    (application, security)
  • validator (Q2/2018)

Contributte > PSR

  • psr7-http-message
  • psr6-caching (Q4/2017)
  • psr3-logging (Q4/2017)

Contributte > Other

  • api
  • middlewares
  • logging (funny slack)

PSR-7

php-fig.org/psr/psr-7
contributte/psr7-http-message

Request + ServerRequest


$request->getHeaders()
$request->getHeader($name)
$request->withHeader($name, $value)
$request->getBody()
$request->withBody($body)
// ...
$serverRequest->getUploadedFiles()
$serverRequest->withUploadedFiles(array $uploadedFiles)
// ...
                

Response


$response->withHeader($name, $value)
$response->getBody()->write($payload)
$response->withBody($body)
// ..
                

Middlewares

contributte/middlewares

extensions:
    middleware: Contributte\Middlewares\DI\MiddlewareExtension
                

middleware:
  middlewares:
    # Catch all exceptions
    - Contributte\Middlewares\Middleware\TracyMiddleware

    # Your custom middlewares
    - TrailingSlashMiddleware
    - UuidMiddleware
    - CspMiddleware

    # Api
    - Contributte\Api\Middlewares\ApiMiddleware
                

PHP - Middlewares

oscarotero/psr7-middlewares

47 middlewares

AccessLog, AttributeMapper, AuraRouter, AuraSession, BasePath, BasicAuthentication, BlockSpam, Cache, ClientIp, Cors, Csp, Csrf, DebugBar, Delay, DetectDevice, DigestAuthentication, EncodingNegotiator, ErrorHandler, Expires, FastRoute, FormTimestamp, Firewall, FormatNegotiator, Geolocate, GoogleAnalytics, Honeypot, Https, ImageTransformer, IncludeResponse, JsonSchema, LanguageNegotiation, LeagueRoute, MethodOverride, Minify, Payload, PhpSession, Piwik, ReadResponse, Recaptcha, Rename, ResponseTime, Robots, SaveResponse, Shutdown, TrailingSlash, Uuid, Whoops, Www

API

github.com/contributte/api
composer require contributte/api:0.3
  • PSR-7
  • Middlewares
  • Annotations
  • Controllers

/**
 * @Controller
 * @RootPath("/hello")
 */
final class HelloController implements IController
{

    /**
     * @Path("/world")
     * @Method("GET")
     * @param ApiRequest $request
     * @param ApiResponse $response
     * @return ApiResponse
     */
    public function index(ApiRequest $request, ApiResponse $response)
    {
        return $response->writeBody('Hello world!');
    }
}
                

Demo

github.com/contributte/playground
git clone git@github.com:contributte/playground.git

Roadmap

  • OpenApi (Swagger)
  • Entity Mapping (Req/Resp)
  • More examples
  • More blogposts

Q / A?

Thank you


Milan Šulc

github.com/f3l1x

twitter.com/xf3l1x

f3l1x.io