# Converters
A converter takes the data
, received from a response of a request and converts it into a new value of
the same or a different type.
It requires the implementation of the following 2 methods:
/**
* Get if the converter should convert a given response.
* @param response
*/
canConvert(response: EchoResponse): boolean;
/**
* Convert a fetch response to a different type.
* @param response
*/
convert(response: EchoResponse): any;
The canConvert(response: EchoResponse)
method is used for determining if the converter can convert a given response.
For every response only 1 converter will be able to convert the response.
The first converter in the list, which results true for canConvert
, will convert the response.
# Creating a converter
You can create a converter by implementing the interface EchoServiceConverter
.
import * as parser from "fast-xml-parser";
export class TestConverter implements EchoServiceConverter {
/**
* Get if the converter should convert a given response.
* @param response
*/
canConvert(response: EchoResponse): boolean {
return parser.validate(response.data) === true;
}
/**
* Convert a fetch response to a different type.
* @param response
*/
convert(response: EchoResponse): any {
return parser.parse(response.data);
}
}
# Registering a converter
When creating the service using the EchoServiceBuilder
, you can add converters using:
addConverter(converter: EchoServiceConverter)
For example:
const service = new EchoServiceBuilder()
.setBaseUrl("https://localhost:3000")
.addConverter(new TestConverter())
.build(TestService);
You can also add a converter inline:
const service = new EchoServiceBuilder()
.setBaseUrl("https://localhost:3000")
.addConverter(<EchoServiceConverter> {
canConvert(response: EchoResponse): boolean {
return parser.validate(response.data) === true;
},
convert(response: EchoResponse): any {
return parser.parse(response.data);
}
})
.build(TestService);
← Interceptors Vue →