繁体   English   中英

我需要做些什么才能使用C#ASP .NET Web API发送Protobuf序列化数据?

[英]What do I need to do to send out Protobuf serialized Data using C# ASP .NET web api?

我是protobuf的新手,并且是.net的新手。 所以我可能需要帮助。 我的PersonsController有以下代码片段:

public class PersonController : ApiController
{
    [ProtoContract]
    public class Person
    {
        [ProtoMember(1)]
        public int ID { get; set; }
        [ProtoMember(2)]
        public string First { get; set; }
        [ProtoMember(3)]
        public string Last { get; set; }
    }
    // GET api/values
    public IEnumerable<Person> Get()
    {
        List<Person> myList = new List<Person> { 
            new Person { ID = 0, First = "Judy", Last  = "Lee" },
            new Person { ID = 1, First = "John", Last  = "Doe" },
            new Person { ID = 2, First = "George", Last  = "Poole" },
        };

        return myList;
    }
}

我想知道是否足以发送出protobuf数据并被其他应用程序使用?

我正在尝试直接在Google chrome中访问它,而我得到的只是数据的XML格式。

 <ArrayOfPersonController.Person xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/SampleSerialize.Controllers"> <PersonController.Person> <First>Judy</First> <ID>0</ID> <Last>Lee</Last> </PersonController.Person> <PersonController.Person> <First>John</First> <ID>1</ID> <Last>Doe</Last> </PersonController.Person> <PersonController.Person> <First>George</First> <ID>2</ID> <Last>Poole</Last> </PersonController.Person> </ArrayOfPersonController.Person> 

我怎么知道我是否能够发送序列化的数据?

您需要做几件事:

  1. 您需要一个Web客户端,该客户端实际上在请求的Accept 标头中 要求提供protobuf序列化的内容 Chrome不会执行此操作,它只询问您希望Web浏览器要求的诸如text / html,image / *等内容。 protobuf没有标准的内容类型,因此您可以定义自己的内容-许多人都使用application/x-protobuf Chrome浏览器开发人员工具(例如Advanced REST客户端)可让您从浏览器中使用REST API,并根据需要设置请求标头。

  2. 在Web API方面,您需要创建并注册自己的媒体格式化程序。 有一个很好的演练在这里 您可能会从BufferedMediaTypeFormatter派生来进行protobuf(de /)序列化,并且需要配置此类以处理application/x-protobuf请求。 然后,您需要在Web API管道中注册它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM