如何解决如何使用REST API对Confluence页面内容执行“ GET”请求
我是C#的初学者,也是第一次使用REST API。
我想将Azure函数与HTTP触发器一起使用,以通过REST API“ GET”从Confluence页面获取内容。
我在ConfluenceUser
文件中指定了ConfluenceAPI
,ConfluenceDomain
和local.settings.json
。
代码(Visual Studio 2019):
using Microsoft.Extensions.Configuration;
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
namespace HttpClientEx
{
class Program
{
private static async Task Main(string[] args)
{
var confBuild = new ConfigurationBuilder()
.AddJsonFile("local.settings.json")
.AddEnvironmentVariables()
.Build();
//Basic Authentication
var user = Encoding.UTF8.GetBytes(confBuild["ConfluenceUser"]);
var api = Encoding.UTF8.GetBytes(confBuild["ConfluenceAPI"]);
var domain = confBuild["ConfluenceDomain"];
string basic_auth = Convert.ToBase64String(user) + ":" + Convert.ToBase64String(api);
string pageid = "1234567";
string page = "https://" + domain + "/wiki/rest/api/content/" + pageid;
}
private static async Task<string> getPageContent(string domain,int pageid,string basic_auth)
{
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",basic_auth);
var response = await client.GetAsync(String.Format("https://" + domain + "/wiki/rest/api/content/" + pageid.ToString() + "?expand=space,metadata.labels"));
var result = await response.Content.ReadAsStringAsync();
return result;
}
}
}
}
我的问题
我是否正确执行了GET请求?
如何查看从Confluence页面获得的内容?
解决方法
如果要在Azure函数中调用rest API,请参考以下步骤
-
创建Azure函数
#create project
func init LocalFunctionProj --dotnet
cd LocalFunctionProj
#create httptrigger function
func new --name Http --template "HTTP trigger" --authlevel "anonymous"
- 更新项目
a。将以下设置添加到local.settings.json
{
"IsEncrypted": false,"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true","FUNCTIONS_WORKER_RUNTIME": "dotnet","ConfluenceUser":"","ConfluenceAPI":"","ConfluenceDomain":""
}
}
b。更新Http.cs
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Extensions.Configuration;
namespace LocalFunctionProj
{
public static class Http
{
private static HttpClient httpClient = new HttpClient();
[FunctionName("Http")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous,"get","post",Route = null)] HttpRequest req,ILogger log,ExecutionContext context)
{
log.LogInformation("C# HTTP trigger function processed a request.");
var confBuild = new ConfigurationBuilder()
.SetBasePath(context.FunctionAppDirectory)
.AddJsonFile("local.settings.json")
.AddEnvironmentVariables()
.Build();
//Basic Authentication
var user =confBuild["ConfluenceUser"];
var api = confBuild["ConfluenceAPI"];
var domain = confBuild["ConfluenceDomain"];
httpClient.DefaultRequestHeaders.Authorization= new AuthenticationHeaderValue("Basic",Convert.ToBase64String(
ASCIIEncoding.ASCII.GetBytes(
string.Format("{0}:{1}",user,api))));
object body = null;
using (HttpResponseMessage response = await httpClient.GetAsync(
$"https://{domain}/wiki/rest/api/content/163979"))
{
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
body = JsonConvert.DeserializeObject(responseBody);
}
return new OkObjectResult(body);
}
}
}
- 测试
使用以下命令运行项目
func start
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。