我有一个包含Uri实例的类。该类将作为参数发送到REST api
[Serializable]
public class SomeClass
{
public Uri Uri { get; set; }
}
public interface IRefitExample
{
[Post("/api/example")]
Task<string> Example(SomeClass someClass);
}由于某些原因,Uri对象不能通过refit正确传递。
Uri绝对url字符串在客户端如下所示:
"file:///var/share"
当它到达服务器时,它看起来像这样:
"/var/share"
重新调整初始化如下所示:
var settings = new RefitSettings(new NewtonsoftJsonContentSerializer());
_apiRefit = RestService.For<ISomeApi>($"http://localhost:5000", settings);谢谢。
发布于 2021-11-25 18:17:19
也许我没有正确理解这个问题,但改装没有问题。在您的RefitSettings中,您可以使用NewtonsoftJsonContentSerializer(),它根据ISerializable接口的实现对Uri对象进行序列化,并像这样将json:{"Uri":"file:///var/share"}传递到http请求主体中。
文件URI的下一个格式是:file://host/path。如果省略host,则将其视为"localhost",即从中解析URL的计算机。注意,当省略host时,斜杠不会被省略(当"file:///foo.txt“是有效的”时,file://foo.txt“是无效的,尽管有些解释器设法处理后者)。
因此,示例中的URI指向本地计算机上的以下路径共享(与/var/ ./var/share相同)。
此链接可能很有帮助:
https://stackoverflow.com/questions/69526454
复制相似问题