Download the PHP package proklung/request-log-bundle without Composer
On this page you can find all versions of the php package proklung/request-log-bundle. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download proklung/request-log-bundle
More information about proklung/request-log-bundle
Files in proklung/request-log-bundle
Package request-log-bundle
Short Description Бандл для создания и использования моков Response.
License MIT
Informations about the package request-log-bundle
Бандл для создания и использования моков Response
Форк пакета. Доработан под личные нужды, плюс добавил некоторые экспериментальные битриксовые наработки (получилось не стабильно).
Зачем?
Удобно генерировать фикстуры для функциональных тестов из ответов внешнего API.
Основное
1) Добавляешь заголовок x-generate-response-mock
к запросу - получаешь мок в виде файла. Если мок уже существует,
то отдаются данные из него
Известные ограничения
Если GET запрос очень длинный - превышает 255 символов, - то облом, сохранить мок не удается.
Битриксовые дела
Если бандл грузится не из под Битрикса, то соответствующие сервисы удаляются из контейнера.
Идея - создавать моки по url, использующим нативные битриксовые средства (или даже статические страницы).
В конфигурации бандла (файл /local/config/packages/request_log.yaml
) в секции bitrix_uri_list
указываются
regex паттерны страниц, подвергающихся обработке.
Установка
Оригинальная документация
Description
This bundle allows to log HTTP requests and associated responses as json files. This generated json files can be used as API mock in order to test a front app without running the api.
How it works ?
After each request (Kernel::TERMINATE
event) containing the x-generate-response-mock
header, a json file is created
containing the request and the response.
Examples :
GET /categories
app/log/mocks/categories/GET__.json
PUT /categories/1 {"foo": "bar"}
app/log/mocks/categories/PUT__1-a5e74.json
File naming strategy
All files are created with the following convention :
uri/METHOD__segments{--sorted-query=string&others}{__<sha1_substr5(sortedJsonContent)>}{__<sha1_substr5(sortedPostParameters)>}.json
Examples :
URL | Filename |
---|---|
GET / | GET__.json |
GET /categories | categories/GET__.json |
GET /categories/1 | categories/GET__1.json |
GET /categories?search[category][]=foo | categories/GET__--search%5Bcategory%5D%5B%5D=foo.json |
GET /categories?order[foo]=asc&order[bar]=desc | categories/GET__--order%5Bbar%5D=desc&order%5Bfoo%5D=asc.json |
GET /categories?parent=/my/iri | categories/GET__--parent=%2Fmy%2Firi.json |
POST /categories PARAMS: foo1=bar1; foo2=bar2 | categories/POST____3e038.json |
POST /categories CONTENT: {"foo1":"bar1", "foo2":"bar2"} | categories/POST____3e038.json |
PUT /categories/1 CONTENT: {"foo2":"bar2", "foo1":"bar1"} | categories/POST13e038.json |
The filenames query strings can be hashed by setting the `hash_query_params` option to `true`.
For example, `categories/GET__--order[bar]=desc&order[foo]=asc.json` will be `categories/GET__--b0324.json`
The filenames query strings with non-asssocitive arrays are not indexed by default : `?foo[]=bar`.
You can use the indexed format by setting the `use_indexed_associative_array` option to `true` : `?foo[0]=bar`.
If necessary, configure the bundle to your needs (example with default values):
If your are using the NelmioCorsBundle or another CORS protection, you must add the header in the allowed ones :
Usage
The request & response logger is not always activated. To log a request, add the x-generate-response-mock
header into your request :
Commands
Some useful commands are available to manager your mocks :
Clear all mocks
Save mocks in a target directory
All versions of request-log-bundle with dependencies
psr/container Version ^1.0
symfony/dependency-injection Version ^4.0 || ^5.0
symfony/http-kernel Version ^4.0 || ^5.0
symfony/config Version ~4|~5
symfony/console Version ~4|~5