# Extension points — actix/actix-web

> Canonical page: https://codevetter.com/unpack/actix-web/extension-points

# Extension points — actix/actix-web

Scanned commit 30c831fce5328ccf916bea77e59ce6419b457e39 (2026-10-02). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

Extension is built around Rust traits and service factories rather than runtime plugin loading. Applications register resources, scopes, and custom services through builders or generated HttpServiceFactory implementations. Middleware, extractors, responders, and multipart readers expose separate contracts for customization. Client connectors and filesystem filters provide narrower integration hooks.
- App::service accepts any 'static HttpServiceFactory, while App::configure accepts a ServiceConfig callback and merges its services, external resources, application data, and optional default. — [actix-web/src/app.rs#L191-L207](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-web/src/app.rs#L191-L207) [actix-web/src/app.rs#L235-L249](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-web/src/app.rs#L235-L249)
- Scope::register recursively registers nested factories using cloned configuration and a root-prefix ResourceMap; ScopeService applies its own guarded router and inherited or overridden default service. — [actix-web/src/scope.rs#L381-L400](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-web/src/scope.rs#L381-L400) [actix-web/src/scope.rs#L530-L547](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-web/src/scope.rs#L530-L547)
- App::wrap accepts Transform over the inner Service; middleware can initialize services, alter request/response data, and short-circuit. Registration order is observable because the last wrapper handles incoming requests first. — [actix-web/src/app.rs#L345-L364](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-web/src/app.rs#L345-L364) [actix-web/src/middleware/authors-guide.md#L12-L27](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-web/src/middleware/authors-guide.md#L12-L27)
- Custom request types implement FromRequest with Error, Future, and from_request; extractor configuration is supplied through App/Scope/Resource data, with a single-consumer payload constraint. — [actix-web/src/extract.rs#L25-L49](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-web/src/extract.rs#L25-L49) [actix-web/src/extract.rs#L66-L96](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-web/src/extract.rs#L66-L96)
- Handler output customization uses Responder, while custom failures implement ResponseError::status_code/error_response; handler_service is the integration point converting extraction and handler outcomes into ServiceResponse. — [actix-web/src/response/responder.rs#L39-L43](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-web/src/response/responder.rs#L39-L43) [actix-web/src/error/response_error.rs#L25-L47](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-web/src/error/response_error.rs#L25-L47) [actix-web/src/handler.rs#L96-L118](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-web/src/handler.rs#L96-L118)
- Multipart FieldReader defines per-field asynchronous decoding, and MultipartCollect defines limit, handle_field, and from_state. DuplicateField exposes Ignore, Deny, and Replace policies for collection implementations. — [actix-multipart/src/form/mod.rs#L31-L44](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-multipart/src/form/mod.rs#L31-L44) [actix-multipart/src/form/mod.rs#L236-L264](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-multipart/src/form/mod.rs#L236-L264)
- Files::path_filter accepts a closure over a root-relative Path and RequestHead before filesystem existence checks; rejection invokes the configured default handler or returns 404. — [actix-files/src/files.rs#L314-L344](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-files/src/files.rs#L314-L344) [actix-files/src/service.rs#L164-L170](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-files/src/service.rs#L164-L170)
- awc ClientBuilder::connector and wrap customize connection services and Transform middleware; finish conditionally installs Redirect according to max_redirects before constructing the Client. — [awc/src/builder.rs#L78-L95](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/awc/src/builder.rs#L78-L95) [awc/src/builder.rs#L232-L264](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/awc/src/builder.rs#L232-L264)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
