【问题标题】:Updating metadata file in sharepoint online via REST API通过 REST API 在线更新 sharepoint 中的元数据文件
【发布时间】:2020-12-02 11:30:59
【问题描述】:

我将文件上传到共享点并尝试更新其元数据,但我在最后一步总是收到错误 400。

据我了解,sharepoint 仅处理列表和项目。 “文件夹”是一个列表,里面的元数据和文件都是项目。 “文件”是一个列表,它的元数据是项目。

关于更新元数据的文档说要发出 POST 请求:

  • https://{site_url}/_api/web/lists/GetByTitle('{list_title}')/items({item_id})

更新文件必须通过 PUT 方法完成(不允许 MERGE),但更新元数据必须专门通过 MERGE 方法完成。我都试过了,都失败了。

这是我当前的更新元数据请求,但我继续收到错误 400。

var data = {        
    "__metadata": {
        "type":type
    },
    "Description":"lorem ipsum"
    };
var headerToken = {
    headers: {
        'Authorization':'Bearer ' + token                        
        , 'X-HTTP-Method':'MERGE'
        , 'Accept':'application/json;odata=verbose'
        , 'Content-Type':'application/json;odata=verbose'
        , 'Content-Length':JSON.stringify(data).length
        , 'If-Match': etag
        , 'X-RequestDigest': digest
    }
};
try {        
    var response = await axios.post(          
        'https://{site_url}/_api/web/lists/GetByTitle("'+MY_FOLDER+'")/items('+id+')'
        , JSON.stringify(data)
        , headerToken
        );
    return response;
}

typeetagid 来自上传文件响应,digest 来自请求上下文信息端点。 MY_FOLDER 是一个测试库,此时是一个常量。

【问题讨论】:

    标签: node.js sharepoint


    【解决方案1】:

    getbytitle 中需要使用单引号。

    "https://{site_url}/_api/web/lists/GetByTitle('"+MY_FOLDER+"')/items("+id+")"
    

    更新:

    <script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.9.1.min.js" type="text/javascript"></script>
    <script>
    $(document).ready(function () {
    UpdateFolder()
    function UpdateFolder(){  
        $.ajax({  
        url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/GetByTitle('Doc')/items(30)",  
        type: "POST",  
        headers: {  
            "accept": "application/json;odata=verbose",  
            "X-RequestDigest": $("#__REQUESTDIGEST").val(),  
            "content-Type": "application/json;odata=verbose",  
            "IF-MATCH": "*",  
            "X-HTTP-Method": "MERGE"  
        },  
        data: "{__metadata:{'type':'SP.Data.DocItem'},test:'test'}",  
        /*where Title is column name and add your desired new data*/  
        success: function(data) {  
            console.log(data);  
        },  
        error: function(error) {  
            alert(JSON.stringify(error));  
        }  
    });
    }
    })
    </script>
    

    【讨论】:

    • 我尝试了单引号和双引号,但总是得到“错误 400”。
    • 我的js测试代码供大家参考。你在哪里使用你的这个代码? SPFX?
    • 我使用了那个参考。我的代码必须在外部服务器上使用(没有安装 sharepoint)。这就是我必须请求 contextinfo 以获取 X-RequestDigest 值的原因。
    猜你喜欢
    • 1970-01-01
    • 2014-10-26
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    • 2018-10-25
    • 2017-12-31
    • 1970-01-01
    相关资源
    最近更新 更多