【问题标题】:Interacting with a third-party API与第三方 API 交互
【发布时间】:2021-10-18 13:01:07
【问题描述】:

我需要关于向第三方发送 API 请求的建议。 它必须是创建特定文档的 POST 请求,所以我现在所做的基本上是创建一个类似于我将在 POSTMAN 请求正文中发送的对象。

所以基本上我正在创建一个这样的对象:


async prepareTestData(){
    let newTestData = new TestData; //just to reproduce the actual code scene 
    newTestData = {
       prop1: 'value1',
       prop2:{
          prop2.prop1: value
       },
       prop3: {
         prop1: prop1ArrayValue[
         {
            name: 'Test',
            status: 'Okay'
         },
         {
            name: 'Test2',
            status: 'Okay'
         }
         ]
       }
    }
    return newTestData;
}

async sendRequest(newTestData){
    await this.httpService.post('url', newTestData).toPromise();
}

然后我用它向第三方 api 发送请求。所以我的问题是这样发送数据是否正确?

现在我在想,这样的发送或编码方式是否正确?或者有没有更体面的方法来实现这一点?

【问题讨论】:

  • 您能否更具体地说明您面临的问题以及您的问题是什么?您正在创建 newTestData 以在异步函数之外的 POST 请求中使用?如果是,那么第一件事就是返回 newTestData 以在请求中使用。
  • 请澄清您的具体问题或提供更多详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。
  • @DouglasP。我添加了发送数据的功能。我的简单问题是我创建这个对象的方式是否正确? prop3.prop1.prop1ArrayValue 是一个数组,有多个对象。为了清楚起见,我只添加了一个。所以发送这样的数据是正确的吗??

标签: javascript node.js typescript coding-style


【解决方案1】:

根据所提供的内容,我猜您需要一个工厂函数来返回类似的对象,您可以使用这些对象来推入prop3.prop1。根据正在更改的属性,您可以将它们作为参数传递并相应地使用它们。 示例:

function createTestData(changingProp1, changingProp2){
     return {
       prop1: changingProp1,
       prop2: changingProp2
    }
}

在循环中调用它来创建多个对象,你可以在你的数组中使用它。

可以找到更好的例子Factory Function Example

【讨论】:

    【解决方案2】:

    我认为您的对象应该看起来像这样......

    newTestData = {
           prop1: 'value1',
           prop2:{
              prop1: value // note that value is not defined anywhere
           },
           prop3: {
             prop1:[
             {
                name: 'Test',
                status: 'Okay'
             },
             {
                name: 'Test2',
                status: 'Okay'
             }
             ]
           }
        }
    

    您不需要 prop3.prop1.prop1ArrayValue 向对象输入值,但如果您尝试访问该 protey 值(数组),您可以这样做(使用点符号)newTestData.prop3.prop1,结果应该是:

    [
      {
        name: 'Test',
        status: 'Okay'
      },
      {
        name: 'Test2',
        status: 'Okay'
      }
    ]
    

    我不知道你到底需要什么,但一个完整的解决方案可能是:

    const value = { text: 'hello world' }
    const newTestData = {
           prop1: 'value1',
           prop2:{
              prop1: value 
           },
           prop3: {
             prop1:[
             {
                name: 'Test',
                status: 'Okay'
             },
             {
                name: 'Test2',
                status: 'Okay'
             }
             ]
           }
        }
    
    async sendRequest(newTestData){
        await this.httpService.post('url', newTestData).toPromise();
    }
    

    【讨论】:

      猜你喜欢
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-07
      • 2015-10-05
      • 1970-01-01
      • 2015-08-13
      • 2013-06-13
      • 1970-01-01
      相关资源
      最近更新 更多