Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

PSR-7についてざっくり調べた&更に理解を深める為のリンク集

More than 3 years have passed since last update.

PSR-7

  • ミドルウェアよくわからないので調べた
  • 結局よくわからない

公式

http://www.php-fig.org/psr/psr-7/
http://www.php-fig.org/psr/psr-7/meta/

仕様

  • Request: Psr\Http\Message\RequestInterface
  • Response: Psr\Http\Message\ResponseInterface
  • これらは Psr\Http\Message\MessageInterface を継承している

http headers

  • headerのkeyは大文字小文字を区別しない
  • headerはカンマ区切りstringかarrayで返ってくる
    • すべてカンマ区切りで結合できるわけではない
    • ex.Set-header
  • request host headerがrequest host componentやURI host componentより優先される

stream

  • StreamInterfaceは実装の詳細を隠すために継承する
    • php://memoryphp://tempが使われる
  • isReadable(), isWritable(), and isSeekable()で要求の可否を見る
  • __toString()はbody contents全体をどう取り扱うかをシンプルにする
  • StreamInterfaceはimmutableではない

URI

  • requestはrequest-targetを含み、以下4つの形態がある
    • origin → 相対パス
    • absolute → 絶対パス
    • authority → CONNECT requestsのときに使う、httpclientとproxyを繋ぐ
    • asterisk → OPTIONS methodと共に使うこれ → *
  • UriInterfaceを継承する

Server-side Requests

  • $_COOKIE, $_GET, $_POST, $_FILES, $_SERVER
  • ServerRequestInterfaceRequestInterfaceを継承する
  • ServerRequestInterfaceはこれらsuper globalを扱う

Uploaded files

  • ServerRequestInterfaceはfile uploadの時、UploadedFileInterfaceを使っていい感じにしてくれる

source

implementとかmwとか

もっと色々記事を探すなら

次のアクションとしては

  • PSR-7使ったapp作ってみる
    • 普段event-drivenなFW使っているため、ミドルウェア使うapp作ったこと無い。。。
  • 実装を精読する
  • 自分で仕様を実装してみる
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away