问题标签 [refit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
106 浏览

rest - 如何在 Xamarin 表单中使用没有 ModernHttpClient 的 Fusillade?

考虑到不再需要 ModernHttpClient,如果没有它,如何使用 Fusillade?

谢谢

0 投票
1 回答
1362 浏览

c# - 如何使用 Refit 反序列化数组?

尝试在 PCL 中使用 Refit 反序列化 Json 时出现以下错误:

无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型“System.Collections.Generic.List`1[UserItem]”,因为该类型需要 JSON 数组(例如 [1,2,3] ) 以正确反序列化。要修复此错误,请将 JSON 更改为 JSON 数组(例如 [1,2,3])或更改反序列化类型,使其成为普通的 .NET 类型(例如,不是像整数这样的原始类型,而不是像这样的集合类型可以从 JSON 对象反序列化的数组或列表。JsonObjectAttribute 也可以添加到类型中以强制它从 JSON 对象反序列化。路径“user.id”,第 1 行,位置 42。

我认为它来自为利益返回的数组?

编辑:这是我实例化 Refit 的方式:

以及我如何称呼该服务:

编辑 2:我尝试将 UserResponse 更改为动态,然后将动态对象解析为 UserReponse,但它仍然剥夺了兴趣。而且我会失去使用 Refit 的好处:

我做错了吗?没有一种简单的方法来检索字符串数组吗?

0 投票
2 回答
7209 浏览

c# - 带改装的多部分内容

我正在使用带有改装的多部分。我尝试为我的服务上传个人资料图片,邮递员生成的代码看起来像这样

然后我像这样构造 Refit 方法

如果我使用byte[]或者ByteArrayPart它会抛出异常

{System.Net.Http.HttpRequestException:发送请求时发生错误---> System.Net.WebException:获取响应流时出错(分块Read2):ReceiveFailure ---> System.Exception:在System.Net.WebConnection .HandleError (System.Net.WebExceptionStatus st, System.Exception e, System.String where) [0x00031] in :0 at System.Net.WebConnection.Read (System.Net.HttpWebRequest request, System.Byte [] buffer, System .Int32 偏移量,System.Int32 大小)[0x000d2] in :0 at System.Net.WebConnectionStream.ReadAll () [0x0010e] in :0 at System.Net.HttpWebResponse.ReadAll () [0x00011] in :0 at System。 Net.HttpWebRequest.CheckFinalStatus (System.Net.WebAsyncResult 结果) [0x001d6] in :0 在 System.Net.HttpWebRequest.SetResponseData (System.Net.WebConnectionData 数据) [0x0013e] in :0 在 System.Net.WebConnection.ReadDone (System.IAsyncResult 结果) [0x0024d] 在 :0 在 System.Net.Sockets.SocketAsyncResult+<>c.b__27_0 (System.Object 状态) [0x00000] 在 :0 在 System.Threading .QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem () [0x00015] 在 System.Threading.ThreadPoolWorkQueue.Dispatch () [0x00074] 在 :0 在 ObjCRuntime.Runtime.ThreadPoolDispatcher (System.Func`1[TResult] 回调) [0x00006] in <0b60c1467e7449608ac42f9c7bbfdd05>:0 at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback () [0x00009] in:0 at System.Net.WebConnection.HandleError (System.Net.WebExceptionStatus st, System.Exception e, System.String其中)[0x00031] 在 /Library/Frameworks/Xamarin.iOS.framework/Versions/11.12.0.4/src/Xamarin。iOS/mcs/class/System/System.Net/WebConnection.cs:439

. 如果我使用Stream或者StreamPart它也会抛出异常,表示流已关闭。

0 投票
0 回答
1485 浏览

c# - 使用 Refit 添加自定义 TypedClient

使用 Refit 添加自定义客户端时遇到问题。我不想要默认的 httpClient。这样做的原因是我不希望我的消费者在使用我的改装实施客户端时更改 httpclient 配置。我猜是关注点分离。

我有一个继承自 httpClient 的类 CustomHttpClient。

自定义HttpClient.cs

我得到了例外:

System.InvalidOperationException: 'ValueFactory 试图访问此实例的 Value 属性。'

AddTypedClient 将客户端添加为 Transient,但我希望它为 Singleton。我不确定如何告诉 Refit 使用我的 CustomHttpClient 和 CustomHttpClientHandler 应该是单例的?

更新: 我尝试了下面的代码并给出了新的异常。

System.InvalidOperationException:'找不到适合类型'BBC.Studios.Rightsline.Client.RightslineHttpClient'的构造函数。确保类型是具体的,并且为公共构造函数的所有参数注册了服务。

0 投票
3 回答
2246 浏览

c# - .NET Core 改装 HTTPS 错误

我有以下代码,它使用 Refit 进行 HTTPS 调用。它适用于针对 .NET 框架 4.6.1 的控制台应用程序。

当我从针对 .NET Core 2.1 的控制台应用程序运行完全相同的代码时,我收到一个错误:

无法建立 SSL 连接...处理证书时发生未知错误

我正在使用改装版本 4.5.6

事实上,当面向 .NET Core 2.1 时,我的所有 HTTPS 调用都失败了,但我的 HTTP 调用工作正常。

是否有一些配置或某些东西可以让 HTTPS 调用在使用 Refit 的 .NET Core 2.1 应用程序中工作?

0 投票
1 回答
497 浏览

c# - 改装 - 如何编辑小胡子模板

我对使用 Refit 和 C# 还很陌生。我正在尝试编辑我的RefitStub.g.cs页面并看到一条消息:

我不确定如何以及在哪里编辑这个胡子模板。

我已经通过 Nuget 引用了 Refit。

0 投票
2 回答
1728 浏览

c# - 如何从现有的 Controller 中自动生成改装接口?

我正在调查改装库并评估我是否值得集成到我的项目中。

假设我有这个控制器,它接受POST带有特定合同的消息:

根据我从refit文档中了解到的情况,我必须创建一个界面。让我们称之为IKeepAliveService。它看起来像这样:

PostAttribute如果我弄乱了签名本身或签名本身中的路由,这种做事方式会导致潜在的运行时错误。

问题

有没有办法从现有的控制器中自动生成这个接口,从而降低错误的风险?

0 投票
3 回答
18486 浏览

c# - 改装和授权标头

目前,我正在向我的请求添加一个授权标头,如下所示:

文件:SomeFile.cs

文件:SomeOtherFile.cs

有没有办法全局设置 authHeader,这样我就不必将它作为参数传递给每个调用?(我使用的是改装版本 4.6.48)。换句话说,我希望能够进行这样的调用:

0 投票
2 回答
335 浏览

json - Xamarin 改装 - Newtonsoft.Json.JsonSerializationException

我对 JSON 序列化有一些问题。当我尝试反序列化我的 JSON 对象时,它返回了这个错误:

Newtonsoft.Json.JsonSerializationException:无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型“Project.Models.BookModel”,因为该类型需要 JSON 对象(例如 {"name":"value"})正确反序列化。

我的问题是我必须以两种不同的方式反序列化我的对象:在 JSON 数组(例如 [1,2,3])中提取“_id”、“user”和“name”,然后在 JSON 数组中(eg["name":"value"]) 提取“书籍”。而且我不知道该怎么做。或者更准确地说,我不知道 Refit 是否可行。

这是我的 JSON:

这是我的代码:

还有我的对象 LibraryModel :

我的方法 GetLibrary :

0 投票
2 回答
6013 浏览

c# - How to properly post-process Refit return values?

I'm writing some APIs using Refit, which works wonders, and I'm having some trouble figuring out a good (as in "clean", "proper") way to perform some arbitrary processing on the returned data.

As an example, consider this code:

Now, a lot of REST APIs I've seen have the unfortunate habit of packing the actual data (as in "useful" data) deep into the JSON response. Say, the actual JSON has this structure:

Now, typically I'd just map all the necessary models, which would allow Refit to correctly deserialize the response. This though makes the API a bit clunky to use, as every time I use it I have to do something like:

What I'm saying is that those two outer models are really just containers, that don't need to be exposed to the user. Or, say the Data property is a model that has another property that is an IEnumerable, I might very well just want to directly return that to the user.

I have no idea on how to do this without having to write useless wrapper classes for each service, where each one would also have to obviously repeat all the XML comments in the interfaces etc., resulting in even more useless code floating around.

I'd just like to have some simple, optional Func<T, TResult> equivalent that gets called on the result of a given Refit API, and does some modifications on the returned data before presenting it to the user.