【问题标题】:Query SharePoint Online Term Store via REST通过 REST 查询 SharePoint Online 术语库
【发布时间】:2017-05-31 21:04:05
【问题描述】:

我想从我的 SharePoint Online 术语库中的术语集中查询和检索术语,以便它们可以用作外部 Web 应用程序(JAVA 后端、角度/材料前端)中 UI 的查找数据。

这不是提供商托管的 SharePoint 应用程序,因此我需要使用 REST 或 SOAP 通过 Web 访问术语库。

我正在尝试构建的是类似于由 MSFT OfficeDev PnP 团队 (https://github.com/SharePoint/PnP/tree/dev/Components/Core.TaxonomyPicker) 创建的分类选择器组件,除了它不应该依赖于在提供商托管的 SharePoint 应用程序中运行。

这可能吗?是否有这样的 API 可以利用,具有安全性等,因此我们可以传入客户端密钥或其他东西并调用 REST/SOAP api 来检索术语?

我不需要更新术语,只需检索它们(标签和术语 ID)。

谢谢!

【问题讨论】:

    标签: java rest sharepoint soap


    【解决方案1】:

    分类服务没有 REST api: https://social.msdn.microsoft.com/Forums/sharepoint/en-US/418be97e-1fb0-4c04-922f-e90c78476720/rest-apis-for-taxonomy-in-2013?forum=appsforsharepoint

    您可以使用 ilspy/reflector 自行检查这一事实,以查看其具有 ClientLibraryTargets = ClientLibraryTargets.NonRESTful 的服务器对象模型中的类属性,如下所示:

    namespace Microsoft.SharePoint.Taxonomy
    {
        [ClientCallableType(ServerTypeId = "A99E4A8F-010B-4e56-9B29-B7BD6EC51263", ClientLibraryTargets = ClientLibraryTargets.NonRESTful)]
        // ....
        public abstract class TermSetItem : TaxonomyItem
    

    【讨论】:

    【解决方案2】:

    可能不完全是您需要的,但这个将 REST 返回使用过的术语... 通过一些解决方法,您可以获得所有返回的条款...

    https://site/_api/web/lists/getbytitle('TaxonomyHiddenList')/items

    https://site/Lists/TaxonomyHiddenList/

    【讨论】:

    • 总是空的
    【解决方案3】:

    您可以使用 SOAP 网络服务 /_vti_bin/taxonomyclientservice.asmx 来查询术语库

    【讨论】:

      【解决方案4】:

      从 2.1 REST API(可能更早)开始,可以做到这一点。

      看到这个答案: https://sharepoint.stackexchange.com/questions/283332/taxonomyclientservice-is-still-the-way-to-go/287868#287868this article 该答案基于。

      编辑:为避免这是一个仅限链接的答案,我复制了以下示例。

      术语库组:

      要列出:

      Endpoint : https://testinglala.sharepoint.com/_api/v2.1/termStore/groups  
      Method : GET  
      Headers : {"Content-Type": "application/json",
                 "Authorization": "Bearer <Bearer Token>"}
      

      创建:

       Endpoint : https://testinglala.sharepoint.com/_api/v2.1/termStore/groups    
       Method : POST    
       Headers : {"Content-Type": "application/json",  
                  "Authorization": "Bearer <Bearer Token>"}
       Body : {"name":"FromRESTAPI", "description":"Description For FromRESTAPI"} 
      

      术语集:

      要列出:

      Endpoint : https://testinglala.sharepoint.com/_api/v2.1/termStore/groups/122d92ab-    d7a8-479f-9888-8d4421f8218f/sets
      Method : GET    
      Headers : {"Content-Type": "application/json",  
                 "Authorization": "Bearer <Bearer Token>"} 
      

      创建:

      Endpoint : https://testinglala.sharepoint.com/_api/v2.1/termStore/groups/122d92ab-d7a8-479f-9888-8d4421f8218f/sets      
      Method : POST      
      Headers : {"Content-Type": "application/json",    
                 "Authorization": "Bearer <Bearer Token>"}
      Body : {"description": "","localizedNames": [{"name": "OperationLevel","languageTag": "en-US"}]} 
      

      更新:

      Endpoint : https://testinglala.sharepoint.com/_api/v2.1/termStore/groups/122d92ab-d7a8-479f-9888-8d4421f8218f/sets/dbc06a0b-7f38-42dc-84a7-0b734f350303          
      Method : PATCH         
      Headers : {"Content-Type": "application/json",        
                 "Authorization": "Bearer <Bearer Token>"}    
      Body : {"description": "Added description","localizedNames": [{"name": "OperationLevelUpdated","languageTag": "en-US"}]} 
      

      删除:

      Endpoint : https://testinglala.sharepoint.com/_api/v2.1/termStore/groups/122d92ab-d7a8-479f-9888-8d4421f8218f/sets/dbc06a0b-7f38-42dc-84a7-0b734f350303            
      Method : DELETE          
      Headers : {"Content-Type": "application/json",          
                 "Authorization": "Bearer <Bearer Token>"} 
      

      条款

      要列出:

      Endpoint : https://testinglala.sharepoint.com/_api/v2.1/termStore/groups/122d92ab-d7a8-479f-9888-8d4421f8218f/sets/8ed8c9ea-7052-4c1d-a4d7-b9c10bffea6f/terms      
      Method : GET      
      Headers : {"Content-Type": "application/json",    
                 "Authorization": "Bearer <Bearer Token>"} 
      

      创建(注意,isDefault 必须为 true 否则会失败):

      Endpoint : https://testinglala.sharepoint.com/_api/v2.1/termStore/groups/122d92ab-d7a8-479f-9888-8d4421f8218f/sets/8ed8c9ea-7052-4c1d-a4d7-b9c10bffea6f/children        
      Method : POST        
      Headers : {"Content-Type": "application/json",      
                 "Authorization": "Bearer <Bearer Token>"}   
      Body : {"labels": [{"name": "AI","isDefault":true,"languageTag": "en-US"}],"descriptions": [{"description": "AI Innovation","languageTag": "en-US"}]} 
      

      要更新(我没用过):

      Endpoint : https://testinglala.sharepoint.com/_api/v2.1/termStore/groups/122d92ab-d7a8-479f-9888-8d4421f8218f/sets/8ed8c9ea-7052-4c1d-a4d7-b9c10bffea6f/terms/b8b3e828-cdf7-46b2-889e-f5f797a05aa3          
      Method : PATCH          
      Headers : {"Content-Type": "application/json",        
                "Authorization": "Bearer <Bearer Token>"}     
      Body : {"labels": [{"name": "AI Updated","isDefault":true,"languageTag": "en-US"}],"descriptions": [{"description": "AI Innovation Updated","languageTag": "en-US"}]} 
      

      删除:

      Endpoint : https://testinglala.sharepoint.com/_api/v2.1/termStore/groups/122d92ab-d7a8-479f-9888-8d4421f8218f/sets/8ed8c9ea-7052-4c1d-a4d7-b9c10bffea6f/terms/b8b3e828-cdf7-46b2-889e-f5f797a05aa3            
      Method : DELETE            
      Headers : {"Content-Type": "application/json",          
                 "Authorization": "Bearer <Bearer Token>"}  
      

      嵌套条款(我的小贡献)

      要列出:

      Endpoint : https://testinglala.sharepoint.com/_api/v2.1/termStore/groups/122d92ab-d7a8-479f-9888-8d4421f8218f/sets/8ed8c9ea-7052-4c1d-a4d7-b9c10bffea6f/terms/12345678-1234-1234-1234-123456789012/children      
      Method : GET      
      Headers : {"Content-Type": "application/json",    
                 "Authorization": "Bearer <Bearer Token>"}
      

      我尚未创建、更新或删除嵌套术语。如果我这样做了,我会更新这个答案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-10-23
        • 2017-07-19
        • 1970-01-01
        • 2018-09-01
        • 1970-01-01
        • 2013-10-12
        • 1970-01-01
        相关资源
        最近更新 更多