【问题标题】:SharePoint API GetFolderByServerRelativeUrl will not work yet GetFileByServerRelativeUrl will workSharePoint API GetFolderByServerRelativeUrl 将不起作用 GetFileByServerRelativeUrl 将起作用
【发布时间】:2021-12-04 02:29:40
【问题描述】:

在某些情况下,我正在使用sp-rest-proxy 制作一个工具,该工具将使用反应接口从 SharePoint (MS 365) 获取、修改和替换 json 数据。在找出身份验证问题后,我现在遇到了阻止我更新文件的问题。

注意: sp-rest-proxy 带有一个非常方便的界面,可以让您在 localhost 上测试各种路由,下面的块是 SharePoint REST 相关端点。另外,虽然我出于隐私目的使用示例路径,但真实路径中没有特殊字符,这不是“%”问题。

这个端点很好用,可以毫不费力地给我数据

/sites/front/_api/web/GetFileByServerRelativeUrl('sites/homePage/DivisionSite/DeptSite/myLibrary/folder/subFolder/data.json')/$value  

但这些会导致 404s

/sites/front/_api/web/GetFolderByServerRelativeUrl('sites/homePage/DivisionSite/DeptSite/myLibrary/folder/subFolder')/files/add(url='data.json',overwrite=true)

/sites/front/_api/web/GetFolderByServerRelativeUrl('sites/homePage/DivisionSite/DeptSite/myLibrary/folder/subFolder')/Files('data.json')

/*
{
  "readyState": 4,
  "responseText": "{\"error\":{\"code\":\"-2147024893, System.IO.DirectoryNotFoundException\",\"message\":{\"lang\":\"en-US\",\"value\":\"File Not Found.\"}}}",
  "responseJSON": {
    "error": {
      "code": "-2147024893, System.IO.DirectoryNotFoundException",
      "message": {
        "lang": "en-US",
        "value": "File Not Found."
      }
    }
  },
  "status": 404,
  "statusText": "Not Found"
}
*/

我可以使用界面查看我的文件夹是否存在并包含项目(我的 json 文件)

/sites/front/_api/web/GetFolderByServerRelativeUrl('sites/homePage/DivisionSite/DeptSite/myLibrary/folder/subFolder')
/*
"..." represents stuff I hid for privacy
{
  "d": {
    "__metadata": {
      "id": "...",
      "uri": "...",
      "type": "SP.Folder"
    },
    "Files": {
      "__deferred": {
        "uri": "..."
      }
    },
    "ListItemAllFields": {
      "__deferred": {
        "uri": "..."
      }
    },
    "ParentFolder": {
      "__deferred": {
        "uri": "..."
      }
    },
    "Properties": {
      "__deferred": {
        "uri": "..."
      }
    },
    "StorageMetrics": {
      "__deferred": {
        "uri": "..."
      }
    },
    "Folders": {
      "__deferred": {
        "uri": "..."
      }
    },
    "Exists": true,
    "IsWOPIEnabled": false,
    "ItemCount": 5,
    "Name": "otherFolder",
    "ProgID": null,
    "ServerRelativeUrl": "sites/homePage/DivisionSite/DeptSite/myLibrary/folder/subFolder",
    "TimeCreated": "2021-09-20T18:51:29Z",
    "TimeLastModified": "2021-10-01T20:03:03Z",
    "UniqueId": "...,
    "WelcomePage": ""
  }
}
*/

但是,当我尝试查看文件时...

/sites/front/_api/web/GetFolderByServerRelativeUrl('sites/homePage/DivisionSite/DeptSite/myLibrary/folder/subFolder')/Files
/*
{
  "d": {
    "results": []
  }
}
*/ 

(“?$expand=File” 的结果类似)

鉴于我似乎需要 GetFolderByServerRelativeUrl 来替换文件,我真的需要弄清楚那里发生了什么。

附录: 基于一些类似的问题,我也会提到这一点。我的应用权限设置如下:(建议here

 <AppPermissionRequests AllowAppOnlyPolicy="true">
   <AppPermissionRequest Scope="http://sharepoint/content/tenant" Right="FullControl" />
 </AppPermissionRequests>

【问题讨论】:

    标签: sharepoint sharepoint-rest-api


    【解决方案1】:

    路径应该是相对路径。网址应如下所示

    /sites/front/_api/web/GetFolderByServerRelativeUrl('Library/folder/otherFolder')/files/add(url='data.json',overwrite=true)
    

    api是上传或创建路径中的文件。您应该确认 sharepoint 在线站点有文件夹和文档库

    【讨论】:

    • 感谢您的建议,我在刷完correct terminology 后更新了我的问题,使用myLibrary/folder/subFolder 似乎导致400 错误“参数名称:不支持指定的值serverRelativeUrl 参数。”我能够将路线削减到/DeptSite/myLibrary/folder/subFolder,这是我不知道自己能做到的。但是,它给了我同样的问题。这与 UI 建议的链接相匹配(请参阅新图 1)。
    【解决方案2】:

    我在这里收到了来自 Microsoft 表单的答复 (https://docs.microsoft.com/en-us/answers/questions/600556/sharepoint-rest-api-getfilebyserverrelativeurl-iss.html)

    虽然@RaytheonXie-MSFT 提供的答案很接近(如果我在第一次发帖时有正确的路径,可能会发现,所以这在我身上)

    我缺少的是在 URL 中调用 GetFolderByServerRelativeUrl 之前。通过调整那里的路径,更多的相对路径将是正确的。

    我需要的是:

    /sites /homePage/DivisionSite/DeptSite/ _api/web/GetFolderByServerRelativeUrl('myLibrary/folder/subFolder')/Files

    我太专注于 GetFolderByServerRelativeUrl 命令,以至于我的 GetFolderByServerRelativeUrl 路径错误

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-22
      • 2019-07-08
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 2015-10-18
      相关资源
      最近更新 更多