如何在 SharePoint 框架 Web 部件中为最近的新闻调用 SharePoint 搜索 API?
How do I call the SharePoint Search API for Recent News within a SharePoint Framework webpart?
我正在使用 SharePoint 框架创建一个 Web 部件,我正在尝试使用搜索 API 来获取一些最近的新闻文章以创建新闻轮播。
这是我的代码片段:
private async _getNewsFeedSearchResults() : Promise<string> {
let request_url = `https://[mytenant].sharepoint.com/sites/test-site/_api/search/query?querytext='(IsDocument:True)+AND+(FileExtension:aspx)+AND+(PromotedState:2)'`;
const response = await this.context.spHttpClient.get(request_url, SPHttpClient.configurations.v1);
return await response.text();
}
我从 SharePoint 得到的响应是:
{"error":{"code":"-1, Microsoft.SharePoint.Client.UnknownError","message":"Unknown Error"}}
我怀疑是我的问题 QueryText
:
/_api/search/query?querytext='(IsDocument:True)+AND+(FileExtension:aspx)+AND+(PromotedState:2)'
我也试过了
/_api/search/query?QueryText=%27((IsDocument%3ATrue)%20AND%20(FileExtension%3Aaspx)%20AND%20(PromotedState%3A2))%27
我继续得到相同的结果。
您的 QueryText 没问题。您需要将 OData 版本 headers 指定为 v3,因为搜索 API 不支持 v4。
const response = await this.context.spHttpClient.get(
request_url,
SPHttpClient.configurations.v1,
{
headers: {
"odata-version": "3.0",
},
}
);
我正在使用 SharePoint 框架创建一个 Web 部件,我正在尝试使用搜索 API 来获取一些最近的新闻文章以创建新闻轮播。
这是我的代码片段:
private async _getNewsFeedSearchResults() : Promise<string> {
let request_url = `https://[mytenant].sharepoint.com/sites/test-site/_api/search/query?querytext='(IsDocument:True)+AND+(FileExtension:aspx)+AND+(PromotedState:2)'`;
const response = await this.context.spHttpClient.get(request_url, SPHttpClient.configurations.v1);
return await response.text();
}
我从 SharePoint 得到的响应是:
{"error":{"code":"-1, Microsoft.SharePoint.Client.UnknownError","message":"Unknown Error"}}
我怀疑是我的问题 QueryText
:
/_api/search/query?querytext='(IsDocument:True)+AND+(FileExtension:aspx)+AND+(PromotedState:2)'
我也试过了
/_api/search/query?QueryText=%27((IsDocument%3ATrue)%20AND%20(FileExtension%3Aaspx)%20AND%20(PromotedState%3A2))%27
我继续得到相同的结果。
您的 QueryText 没问题。您需要将 OData 版本 headers 指定为 v3,因为搜索 API 不支持 v4。
const response = await this.context.spHttpClient.get(
request_url,
SPHttpClient.configurations.v1,
{
headers: {
"odata-version": "3.0",
},
}
);