寻找客户端Json / WebAPI包发送HttpGet / HttpPost消息

问题描述 投票:0回答:1

背景技术目前,我正在建立基于Xamarin的移动应用程序的侧面项目,用于基于用户偏好(例如,基于电影类型等)进行简单的电影和电视节目搜索和导航。

为此,移动应用程序充当https://www.themoviedb.org/documentation/api在线电影数据库的Web API服务的客户端。

问题我正在寻找一个简单且支持良好的包来将API Uri路径和查询参数包装到web api查询中。我在RestSharp上看了一下。

我非常喜欢基于模式的查询路径的语法:

var request = new RestRequest("resource/{id}"); 
request.AddParameter("name", "value");
request.AddUrlSegment("id", "123"); 

但我不确定未来的套餐。如果有MS的替代方案,我会接受。

所以也看了MS-alternative定制的Web-API,但我不确定那里推荐什么。我只能找到服务器端的文档和示例(ASP.NET CORE MVC)。

我需要指出一个运行良好的Microsoft .NET标准2.0软件包或第三方从我的Xamarin客户端发送Web API请求。

我在哪里已经编写了很多基于纯HttPClient和AspNetcore.WebUtilituies的代码来组装查询字符串。但是,API路径段的gazillions正在逐渐消失。我真的需要一些东西来管理像RestSharp那样的API路径模板

代码示例:

在这里我声明我手动组装的所有路径段==>丑陋的AF

public static class WebApiPathConstants
{
public const string BASE_Address = "https://api.themoviedb.org";
public const string BASE_Path = "/3";
public const string CONFIG_Path = "/configuration";
public const string GENRE_LIST_Path = "/genre/movie/list";
...
lot of lines here
....
public const string PAGE_Key = "page";
public const string INCLUDE_Adult_Key = "include_adult";
public const string API_KEY_Key = "api_key";
public const string RECOMMENDATIONS_Path = "/recommendations";
public const string SIMILARS_Path = "/similar";
}

在这里,我根据来自服务器的查询组装查询和任务以获取电影详细信息:Url路径的汇编是我的主要问题。它看起来太容易出错了。

    public async Task<FetchMovieDetailsResult> FetchMovieDetails(int id, string language = null, int retryCount = 0, int delayMilliseconds = 1000)
    {
        string baseUrl = BASE_Address + BASE_Path + MOVIE_DETAILS_Path + "/" + id;

        var query = new Dictionary<string, string>();
        query.Add(API_KEY_Key, apiKeyValue);

        if (!string.IsNullOrEmpty(language))
            query.Add(LANGUAGE_Key, language);

        string requestUri = QueryHelpers.AddQueryString(baseUrl, query);

        FetchMovieDetailsResult result = await GetResponse<FetchMovieDetailsResult>(retryCount, delayMilliseconds, requestUri);

        return result;
    }

结果是一个带有HttpStatusCode和(如果成功)Json对象的POCO类。仅当StatusCode == 2xx时,客户端才访问Json对象。

c# .net asp.net-web-api client .net-standard
1个回答
1
投票

如果这与你的用例不匹配,准备在这里被击落,但看起来TheMovieDb站点本身有一个客户端库列表。它可以在这里找到:https://www.themoviedb.org/documentation/api/wrappers-libraries。它们显然比你在这里要求的层高,因为它们完全包装了API,这样你甚至不需要知道你在调用什么或者你如何调用它,而是为了获得它完成工作后,他们似乎已经成功了。

© www.soinside.com 2019 - 2024. All rights reserved.