我有graphql-go
api使用身份验证,当我测试它时它已经工作了
的卷曲
curl \
-X POST \
-H "Content-Type: application/json" \
-H "Token: someS3cr3tT0ken" \
-H "Signature: FAC2CA55E128AB2E399474200121DB19442324D7DFF40A919865130DC1A2409" \
--data '{"transaction_id": "123", "query": "query {validate(phonenumber:\"XXXXXXXXX\") {request_id}}" }' \
http://localhost:6060/validate
响应应该是:
{"data":{"validate":{"request_id":"22421462-4a3e-43c7-b188-57b6fe1c5575"}}}
但我想用apollo客户端以角度实现它。所以,实质上,是否可以在角度http请求中转换上面的curl
命令...?
我已经尝试过使用拦截器并克隆http请求并修改标头,但我只能设置headers: request.headers.set("Authorization", "someS3cr3tT0ken"
然后我与headers: request.headers.set("Signature", "FAC2CA55E128AB2E399474200121DB19442324D7DFF40A919865130DC1A2409"
结合第二个拦截器,当我这样做时它给了我{{ 1}}当上面的任何参数400 badRequest
不正确时,服务器给我的错误响应,事实是,我实际上只是在黑暗中拍摄,并且真的不知道如何设置curl
angular,我找到的大部分资源都是3 Header parameter
,这在我的情况下不起作用,因为我无法提供getToken from localStorage
更新 这是我的拦截器:
Header signature
然后我创建第二个拦截器以分配@Injectable()
export class graphqlInterceptor implements HttpInterceptor{
intercept(request: HttpRequest<any> , next: HttpHandler){
const newRequest = request.clone({
headers: request.headers.set("Token", "someS3cr3tT0ken")
// or
// headers: request.headers.set("Authorization","someS3cr3tT0ken")
//neither of the option above are working.
return next.handle(newRequest)
,,
这是上面实现的结果..我知道你会认为这是来自服务器的CORS问题,但如果我将Signature:
更改为Token
响应更改为错误请求
答案 0 :(得分:0)
我的团队建议我需要将express.js
放在中间,因此从angular
->
到express
,然后处理req
并通过它保存到graphql-server
,就可以使用。