Graphql 网格升级后无法获得肥皂响应

问题描述 投票:0回答:1

我已经升级了 graphql-mesh/soap 版本和其他依赖项。 我的soap wsdl正在使用soap1.1功能。

更新后,我无法连接到肥皂客户端,因为它返回 500 错误,因为请求中 graphqlmesh Soap 创建的命名空间中版本不匹配。

我已经在 .meshrc.yaml 中使用源 url 配置了肥皂处理程序

请求正文中的预期命名空间 -http://schemas.xmlsoap.org/soap/envelope

并生成 - http://www.w3.org/2003/05/soap-envelope

soap graphql graphql-js graphql-mesh
1个回答
0
投票

管理使用custome-fect修改命名空间。

sources:
  - name: myser
    handler:
      soap:
        source: http://127.0.0.1:8080/myser.wsdl
        operationHeaders:
          Content-Type: text/xml;charset=utf-8
          Accept-Encoding: gzip,deflate   
customFetch: ./custom-fetch.ts     
serve:
  endpoint: /api/graphql 
  port: 5000

我的自定义-fetch.js

import { fetch } from '@whatwg-node/fetch'
 
export default async function ( url: string, options: RequestInit = {} )
{
    console.log(url)
    if ( url === 'http://localhost:8080/myserv' )
    {
        console.log(options.body)
        if (options.body && typeof options.body === 'string')
        {
            let body = options.body;
            if (typeof body === 'string') {
                body = body.replace(
                  '<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">',
                  '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" >'
                );
        

                options.body = body;
                console.log('Modified xml body:', options.body);
            }        
        }
    }
    
    return fetch(url, options);
}
© www.soinside.com 2019 - 2024. All rights reserved.