# HyperBuilder

A `HyperBuilder` is a singleton factory component that will give you a new [`HyperRequest`](https://hyper.ortusbooks.com/7.2.0-1/making-requests/hyperrequest) any time you call the `new` method.  It will also create a new [`HyperRequest`](https://hyper.ortusbooks.com/7.2.0-1/making-requests/hyperrequest) any time you call a method on `HyperBuilder` that exists on [`HyperRequest`](https://hyper.ortusbooks.com/7.2.0-1/making-requests/hyperrequest).

`HyperBuilder` is the component you want to inject into your singleton components, like handlers or services.  It will ensure you get a fresh [`HyperRequest`](https://hyper.ortusbooks.com/7.2.0-1/making-requests/hyperrequest) instance on each invocation.  This is important since reusing the same [`HyperRequest`](https://hyper.ortusbooks.com/7.2.0-1/making-requests/hyperrequest) instance will likely produce unintended results.

You can inject a `HyperBuilder` into your application using the `HyperBuilder@hyper` id.

```cfscript
component {
    
    property name="hyper" inject="HyperBuilder@hyper";

    function index( event, rc, prc ) {
        var reqA = hyper.new();
        // reqA is a new HyperRequest instance.
        
        var reqB = hyper.setUrl( "https://swapi.dev/api/people" );
        // reqB is a new HyperRequest instance with the url set.
    }

}
```

If you are not using ColdBox, you can create a `HyperBuilder` manually:

```cfscript
component {

    function init() {
        variables.hyper = new hyper.models.HyperBuilder();
    }

}
```

Additionally, you can register `HyperBuilder` instances as custom HTTP Clients.

{% content-ref url="../customizing-hyper/custom-http-clients" %}
[custom-http-clients](https://hyper.ortusbooks.com/7.2.0-1/customizing-hyper/custom-http-clients)
{% endcontent-ref %}

Finally, you can enable faking of requests from any `HyperBuilder` instance.

{% content-ref url="../testing/faking-requests" %}
[faking-requests](https://hyper.ortusbooks.com/7.2.0-1/testing/faking-requests)
{% endcontent-ref %}
