我如何在反应中使用 MS 图形 API?

Posted

技术标签:

【中文标题】我如何在反应中使用 MS 图形 API?【英文标题】:How do i use the MS graph api in react? 【发布时间】:2021-10-02 19:10:53 【问题描述】:

我对 JS 和 React 完全陌生,我正在尝试使用我的 MS 自定义团队应用上传文件。

我找到了使它工作所需的信息,但我只是不明白如何在我的团队选项卡中使用它。

import React from 'react';
import './App.css';
import * as microsoftTeams from "@microsoft/teams-js";

class Tab extends React.Component 
  constructor(props)
    super(props)
    this.state = 
      context: 
    
  

  componentDidMount() 
    new Promise((resolve) => 
      microsoftTeams.getContext(resolve);
    )
      .then((context) => 
        this.setState( context );
        //var inputs 
        const queryParameters = new URLSearchParams( function: "getDocuments", input: '"'+ context.userPrincipalName + '"',);
        console.log(`userPrincipalName is '$context.Id'`);
        console.log(`teamName is '$context.teamName'`);
        console.log(`http://localhost/openims/json.php?$queryParameters`);
        return fetch(`http://localhost/openims/json.php?$queryParameters`);
      )
      .then((res) => res.json())
      .then((result) => this.setState( ...result ))
      .catch((error) => this.setState( error ))
      .finally(() => this.setState( isLoaded: true ));
  
  
  render()   
    const  error, isLoaded, name, age, city  = this.state;
    if (error) 
      return <div>Error: error.message</div>;
     else if (!isLoaded) 
      return <div>Loading...</div>;
     else 
      return (     
        <ul>
          <li>
            /* <a href="http://google.com" target="_blank" rel="noopener noreferrer">Your Link</a> */
            name age city
          </li>
        </ul>       
      );
    
  


export default Tab;

目前我正在使用 componentDidMount 从 URL 获取我需要的一些信息,但现在我需要弄清楚如何添加另一个 componentDidMount(我认为)来执行 PUT 并将文件上传到我的驱动器位置。最好是我的 MS 团队 onedrive 的驱动器位置。

所以我必须把这个放在某个地方:

PUT /me/drive/root:/FolderA/FileB.txt:/content
Content-Type: text/plain

The contents of the file goes here.

所以我实际上可以上传文件。我该怎么办?

【问题讨论】:

您在谈论 jquery 并将您的问题标记为此类,但您共享的代码是反应... 哦,我的错,我马上改 【参考方案1】:

您不能添加多个 componentDidMount() 方法,但是在成功回调中您可以调用另一个 API 来上传文件。 或者你可以在相同的 componentDidMount() 方法中调用 promise。

您也可以编写如下代码:

fetch('https://me/drive/root:/FolderA/FileB.txt:/', 
  method: 'PUT',
  body: fileContent
)
.then((response) => response.json())
.then((result) => 
  console.log('Success:', result);
)
.catch((error) => 
  console.error('Error:', error);
);

您可以参考以下文档: https://docs.microsoft.com/en-us/graph/api/driveitem-put-content?view=graph-rest-1.0&tabs=http#example-upload-a-new-file

类似问题参考网址: How do I upload a file with the JS fetch API?

谢谢!!

【讨论】:

me/drive/root:/FolderA/FileB.txt: 似乎不是一个平易近人的 URL,我正在使用此代码,但没有添加文件。 你能告诉我为了上传文件我必须去的真正平易近人的 URL 吗?也许像:openimstest.sharepoint.com/me/drive/root:/FolderA/FileB.txt: 或 teams.microsoft.com/me/drive/root:/FolderA/FileB.txt: @7BitAscii - 请您创建一个 SharePoint/OneDrive 文件夹,复制它的 URL 并按照文档中提供的格式在 API 调用中使用。 docs.microsoft.com/en-us/graph/api/…

以上是关于我如何在反应中使用 MS 图形 API?的主要内容,如果未能解决你的问题,请参考以下文章

如何在反应中使用 API 调用测试组件?

如何使用反应在离子框架中调用api?

如何在本机反应中使用 Facebook Messenger api

如何在反应中使用上下文 api 将数据添加到其余 api?

如何使用 api 在服务器端呈现反应?

如何使用图形 API 在 iphone 中喜欢 facebook 社区