有人在使用apollo-datasource-rest
时遇到设置Content-Type
头的问题吗?我试图对application/x-www-form-urlencoded
进行编码,但我的REST API仍然无法看到参数:
class AuthAPI extends RESTDataSource {
...
willSendRequest( request ) {
request.headers.set( 'X-API-KEY', this.apiKey )
request.headers.set( 'Content-Type', 'application/x-www-form-urlencoded')
console.log( request.headers )
console.log( request.body )
}
async getToken( params ) {
return this
.post( apiEndpoints.auth.token, params )
.catch( err => handleError( err ))
}
}
输出:
// console.log( request.headers )
Headers {
[Symbol(map)]: [Object: null prototype] {
'X-API-KEY': [ '1234567890...' ],
'Content-Type': [ 'application/x-www-form-urlencoded' ]
}
}
// console.log( request.body )
{
identifier: 'my.name@domain.com',
format: 'json',
secret: 'P@55w0rd'
}
看起来请求(POST)正文格式正确,标头也设置正确。使用相同的凭据和标头通过Postman发送请求可以返回成功结果,但是通过这个库却不行。
// response
{ success: 0,
error:
{ status: 400,
message: 'Missing username or password',
code: 117
}
}