Microsoft Graph Drive搜索

时间:2017-05-16 21:02:53

标签: microsoft-graph

我试图修改node.js快速入门示例以生成用户的Excel文档列表,但我遇到了问题。

此查询在Graph Explorer中起作用(返回非空结果):

https://graph.microsoft.com/v1.0/me/drive/root/search(q='.xlsx')?select=name,id,webUrl

我尝试了一些方法在graphHelpers.js中重现它。 此查询返回空结果:

function getExcelDocs(accessToken, callback) {
  // Get list of excel docs in the user's onedrive
  request
   .get("https://graph.microsoft.com/v1.0/me/drive/root/search(q='.xlsx')?select=name,id,webUrl")
   .set('Authorization', 'Bearer ' + accessToken)
   .end((err, res) => {
     // Returns 200 OK and the search result in the body. 
     callback(err, res);
   });
}

如果我用驱动子项查询替换搜索URL,我会收到一组非空文档。

.get('https://graph.microsoft.com/v1.0/me/drive/root/children')

我是如何格式化查询网址的?

1 个答案:

答案 0 :(得分:0)

URI中的parens导致此处出现问题。这些parens中的内容代表请求的body。处理此请求的基础库(SuperAgent)似乎不喜欢它们直接进入URI。

我相信您可以通过单独提供网址组件来解决此问题:

request
  .get("https://graph.microsoft.com/v1.0/me/drive/root/search", "q='.xlsx'")
  .query({ select: 'name,id,webUrl'})
  .set('Authorization', 'Bearer ' + accessToken)
  .end((err, res) => {
      // Returns 200 OK and the search result in the body. 
      callback(err, res);
  });

或者,这可能也有效:

request
  .get("https://graph.microsoft.com/v1.0/me/drive/root/search")
  .query({ select: 'name,id,webUrl'})
  .send("q='.xlsx'")
  .set('Authorization', 'Bearer ' + accessToken)
  .end((err, res) => {
      // Returns 200 OK and the search result in the body. 
      callback(err, res);
  });