Skip to content

Commit

Permalink
Sync http-server-form-parser.md
Browse files Browse the repository at this point in the history
  • Loading branch information
amphp-bot committed Dec 29, 2023
1 parent 682dae7 commit a9d6072
Showing 1 changed file with 40 additions and 0 deletions.
40 changes: 40 additions & 0 deletions http-server-form-parser.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
---
notice: 'This file is imported and can be edited at https://github.com/amphp/http-server-form-parser/blob/2.x/README.md'
title: http-server-form-parser
description: 'Learn how to parse x-www-form-urlencoded or multipart/form-data data submitted to an HTTP server request handler.'
image: undraw/undraw_server_cluster.svg
permalink: /http-server-form-parser
source: 'https://github.com/amphp/http-server-form-parser/blob/2.x/README.md'
layout: docs
---
This package is an add-on to [`amphp/http-server`](https://github.com/amphp/http-server), which allows parsing request bodies as forms in either `x-www-form-urlencoded` or `multipart/form-data` format.

## Installation

This package can be installed as a [Composer](https://getcomposer.org/) dependency.

```bash
composer require amphp/http-server-form-parser
```

## Usage

Basic usage works by calling `Form::fromRequest($request)`, which will buffer the request body and parse it. This method may be called multiple times, so both a [middleware](https://github.com/amphp/http-server#middleware) and [request handler](https://github.com/amphp/http-server#requesthandler) may access the form body.

```php
use Amp\Http\Server\FormParser\Form;
use Amp\Http\Server\Request;
use Amp\Http\Server\RequestHandler\ClosureRequestHandler;
use Amp\Http\Server\Response;
use Amp\Http\Status;

$requestHandler = new ClosureRequestHandler(function (Request $request) {
$form = Form::fromRequest($request);

return new Response(Status::OK, [
"content-type" => "text/plain; charset=utf-8"
], $form->getValue("text") ?? "Hello, World!");
});
```

There's also an advanced streaming parser included, `StreamingFormParser`, which can be used to stream uploaded files to disk or other locations.

0 comments on commit a9d6072

Please sign in to comment.