如何解决如何使用restapi向Github存储库发出api请求?
我是C#和.Net的新手,我正努力了解我遇到的这个问题。我觉得我所拥有的已经足够,但不确定自己。所以,如果有人可以回顾一下我下面的代码,并告诉我要纠正的地方和出了什么问题。谢谢
这是我的模型课
namespace github_project.Models
{
public class GithubItem
{
public int Id { get; set; }
public string UserName { get; set; }
public string FullName { get; set; }
public string City { get; set; }
public string ProjectName { get; set; }
public string Commits { get; set; }
public double Rating { get; set; }
public string AvatarUrl { get; set; }
}
}
这是我的数据库上下文
namespace github_project.Database
{
public class GithubContext : DbContext
{
public DbSet<GithubItem> Github { get; set; }
public GithubContext(DbContextOptions<GithubContext> options) : base(options)
{
}
public GithubItem ItemsList()
{
List<GithubItem> build = Build();
GithubItem itemsList = JsonConvert.DeserializeObject<GithubItem>(build);
return itemsList;
}
public List<GithubItem> Build()
{
var getData = GetGithubData();
return System.Text.Json.JsonSerializer.Deserialize<List<GithubItem>>(getData);
}
private string GetGithubData()
{
string username = "**test**";
var url = "https://api.github.com/users/" + username + "/repos?page=1";
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.Method = "GET";
request.ContentType = "application/json";
request.UserAgent = "TestApp";
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
StreamReader reader = new StreamReader(response.GetResponseStream());
return reader.ReadToEnd();
}
}
public List<GithubItem> getGithub() => Github.Local.ToList<GithubItem>();
}
}
最终这是我的控制器
[HttpGet("/github")]
public GithubItem GetAll()
{
return _context.ItemsList();
}
我正在向github请求,以获取所有数据并在请求中使用它。我在这里通过以下方法将Collection.List转换为String:
public GithubItem ItemsList()
{
List<GithubItem> build = Build();
GithubItem itemsList = JsonConvert.DeserializeObject<GithubItem>(**build**);
return itemsList;
}
有人可以帮助我吗,有人可以告诉我这里出了什么问题吗???谢谢
解决方法
您无法反序列化对象或将对象从List<GithubItem>
转换为单个GithubItem
。那就是你在做什么。
如您所见,您有build
:
List<GithubItem> build = Build();
此build
变量是List<GithubItem
。现在,您想使用JsonConvert的反序列化将其转换为单个吗?
无论您使用此代码有什么要求,您都只能获得一条记录:
GithubItem itemsList = build.FirstOrDefault();
那会很好的。但这只是一个例子,因为我不确定您的要求是什么。如果需要过滤记录,还可以在FirstOrDefault上传递参数:
GithubItem itemsList = build.FirstOrDefault(x => x.UserName == "John");
那也可以。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。