Установка не работает (Github API)

Я пытаюсь понять, как использовать библиотеку Refit для выполнения запросов GET, но я не знаю, почему она не работает. Я следую примеру на странице ремонта github. Что мне не хватает? Похоже, что метод GetUser("octocat") не работает. Я пытался найти другие примеры использования refit, но ничего не смог найти.

    private static async void getUser()
    {

        var gitHubApi = RestService.For<IGitHubApi>("https://api.github.com");


        var octocat = await gitHubApi.GetUser("octocat");

}

public class User
{

    [JsonProperty("login")]
    public string Login { get; set; }

    [JsonProperty("id")]
    public long Id { get; set; }

    [JsonProperty("avatar_url")]
    public string AvatarUrl { get; set; }

    [JsonProperty("gravatar_id")]
    public string GravatarId { get; set; }

    [JsonProperty("url")]
    public string Url { get; set; }

    [JsonProperty("html_url")]
    public string HtmlUrl { get; set; }

    [JsonProperty("followers_url")]
    public string FollowersUrl { get; set; }

    [JsonProperty("following_url")]
    public string FollowingUrl { get; set; }

    [JsonProperty("gists_url")]
    public string GistsUrl { get; set; }

    [JsonProperty("starred_url")]
    public string StarredUrl { get; set; }

    [JsonProperty("subscriptions_url")]
    public string SubscriptionsUrl { get; set; }

    [JsonProperty("organizations_url")]
    public string OrganizationsUrl { get; set; }

    [JsonProperty("repos_url")]
    public string ReposUrl { get; set; }

    [JsonProperty("events_url")]
    public string EventsUrl { get; set; }

    [JsonProperty("received_events_url")]
    public string ReceivedEventsUrl { get; set; }

    [JsonProperty("type")]
    public string Type { get; set; }

    [JsonProperty("site_admin")]
    public bool SiteAdmin { get; set; }

    [JsonProperty("name")]
    public string Name { get; set; }

    [JsonProperty("company")]
    public string Company { get; set; }

    [JsonProperty("blog")]
    public string Blog { get; set; }

    [JsonProperty("location")]
    public string Location { get; set; }

    [JsonProperty("email")]
    public object Email { get; set; }

    [JsonProperty("hireable")]
    public object Hireable { get; set; }

    [JsonProperty("bio")]
    public object Bio { get; set; }

    [JsonProperty("public_repos")]
    public long PublicRepos { get; set; }

    [JsonProperty("public_gists")]
    public long PublicGists { get; set; }

    [JsonProperty("followers")]
    public long Followers { get; set; }

    [JsonProperty("following")]
    public long Following { get; set; }

    [JsonProperty("created_at")]
    public System.DateTimeOffset CreatedAt { get; set; }

    [JsonProperty("updated_at")]
    public System.DateTimeOffset UpdatedAt { get; set; }
}

interface IGitHubApi
{


    [Get("/users/{user}")]
    Task<User> GetUser(string user);
}

1 ответ

Если вы хотите запросить GitHub API, вам нужно установить User-Agent

Есть 2 способа сделать это с помощью Refit:

1 - Установите заголовки в вашем контракте

[Headers("User-Agent: My Favorite User Agent!")]
public interface IGitHubApi
{
    [Get("/users/{user}")]
    Task<User> GetUser(string user);
}

2 - Используйте HttpClient и установите его там

var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Add("User-Agent", "My Favorite User Agent!");
httpClient.BaseAddress = new Uri("https://api.github.com");
var gitHubApi = RestService.For<IGitHubApi>(httpClient);
var user = await gitHubApi.GetUser("octocat");

Если вы используете Github API, вам нужно установить UserAgent в заголовке, как показано ниже:

            {
                BaseAddress = new Uri("https://api.github.com"),
                DefaultRequestHeaders = {UserAgent = { ProductInfoHeaderValue.Parse("NakWarsi")}}    //here I have put my username("NakWarsi") what you need to replace with your username 
            };
            _restApiService = RestService.For<IGitHubApi>(_client);

Здесь я создал образец проекта с использованием Github, посмотрите подробную информацию

Другие вопросы по тегам