+ All Categories
Home > Documents > PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP...

PSR: standardising HTTP - Kurakin€¦ · • PSR-7: HTTP Message Interfaces •PSR-15: HTTP...

Date post: 13-Aug-2020
Category:
Upload: others
View: 4 times
Download: 0 times
Share this document with a friend
64
Sergej Kurakin PSR: standardising HTTP
Transcript
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!


Recommended