64
Sergej Kurakin PSR: standardising HTTP

PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Sergej Kurakin

PSR: standardising HTTP

Page 2: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

• PSR-7: HTTP Message Interfaces

• PSR-15: HTTP Handlers

• PSR-17: HTTP Factories

We have 3 PSRs

Page 3: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

PSR-7

Page 4: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Accepted on 19th of May, 2015.

Page 5: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Describes HTTP Message Interfaces.

Page 6: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Namespace: \Psr\Http\Message

Page 7: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

MessageInterface

Page 8: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

RequestInterface

Page 9: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

ServerRequestInterface

Page 10: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

ResponseInterface

Page 11: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

StreamInterface

Page 12: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

UriInterface

Page 13: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

UploadedFileInterface

Page 14: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Why?

Page 15: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Solid, well known abstractions.

Page 16: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Used in around 1900 open source projects

https://packagist.org/packages/psr/http-message/dependents

Page 17: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Independent from HTTP Library implementation.

Page 18: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Less different libraries to learn.

Page 19: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Message Immutability

Page 20: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Library would be compatible with “right” created software.

Page 21: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

PSR-15

Page 22: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Accepted on 22nd of January, 2018

Page 23: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Describes HTTP Server Request Handlers

Page 24: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Namespace: \Psr\Http\Server

Page 25: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

RequestHandlerInterface

Page 26: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

public function handle ( ServerRequestInterface $request): ResponseInterface;

Page 27: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

MiddlewareInterface

Page 28: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

public functionprocess ( ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface;

Page 29: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Why?

Page 30: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Solid reasonable abstraction.

Page 31: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Used in around 400 open source projects

https://packagist.org/packages/psr/http-server-handler/dependentshttps://packagist.org/packages/psr/http-server-middleware/dependents

Page 32: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Handlers focus on doing only one thing good.

Page 33: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Middlewares are just handy.

Page 34: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

I hope frameworks will move towards Handlers.

Page 35: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

PSR-17

Page 36: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Accepted on 31th of July, 2018

Page 37: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Describes HTTP Factories

Page 38: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Namespace: \Psr\Http\Message

Page 39: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

RequestFactoryInterface

Page 40: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

ResponseFactoryInterface

Page 41: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

ServerRequestFactoryInterface

Page 42: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

StreamFactoryInterface

Page 43: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

UploadedFileFactoryInterface

Page 44: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

UriFactoryInterface

Page 45: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Used in around 40 open source projects

https://packagist.org/packages/psr/http-factory/dependents

Page 46: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Why?

Page 47: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Reasonable abstraction.

Page 48: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Independent from HTTP library implementation.

Page 49: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

PSR-18

Page 50: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Describes HTTP Client Interface

Page 51: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Namespace: \Psr\Http\Client

Page 52: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

ClientInterface

Page 53: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

publicfunctionsendRequest ( RequestInterface $request): ResponseInterface;

Page 54: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

ClientException

Page 55: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

RequestException

Page 56: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

NetworkException

Page 57: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Still in review.

Page 58: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Notes

Page 59: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

You can use good parts even if your framework does not support it.

Page 60: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Handlers -> Controller with one Action

Page 61: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Use HTTP Message Interfaces.

Page 62: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

What do you think?

Page 63: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Linkshttps://www.php-fig.org/https://www.php-fig.org/psr/psr-7/https://www.php-fig.org/psr/psr-15/https://www.php-fig.org/psr/psr-17/https://github.com/php-fig/fig-standards/tree/master/proposed/http-client/https://github.com/middlewares/awesome-psr15-middlewares

Page 64: PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP Handlers •We have 3 PSRs PSR-17: HTTP Factories. PSR-7. Accepted on 19th of May, 2015

Thanks!