swagger-typescript-api
swagger-typescript-api copied to clipboard
Response data and error is null when using --extract-response-body
FWIW, I'm using this Swagger spec to generate an API: https://esi.evetech.net/latest/swagger.json
I then use the following command to generate the API:
swagger-typescript-api \
-p https://esi.evetech.net/latest/swagger.json \
-o src/app/api/esi \
--route-types \
--responses \
--extract-enums \
--extract-request-params \
--extract-request-body \
--extract-response-body \
--extract-response-error \
--modular \
--sort-types \
--sort-routes
Whenever I try to use --extract-response-body
, I'm not ever able to access the data attribute. I have confirmed that I'm getting valid data back from await response.json()
.
import { Api } from './api'
const api = new Api()
const response = await api.getContractsCharacterIdContracts({ ... })
// These don't work; both always null
// if (response.error) return
// const data = response.data
// This works fine
if (!response.ok) return
const data = await response.data()
It's only when I remove the --extract-response-body
that I'm able to access the data
and error
attributes again.
Anything I'm doing wrong or is there something else going on?
I have the same problem
I believe the issue is the request function doesn't read the Content-Type, and you need to provide a configuration object to Api
:
Api({
baseApiParams: {
format: "json"
}
})
I believe the issue is the request function doesn't read the Content-Type, and you need to provide a configuration object to
Api
:Api({ baseApiParams: { format: "json" } })
this solved most of my methods in run-time, but some are still generated incorrectly without any format
specified, and overriding it in baseApiParams
doesn't seem to work and the client tries to send the body as text instead of json
this happens when the request body is not extracted for some reason, e.g., { id: string }
is reused a lot between my routes and this type is always inlined
I had to go back to unextracted request and response types