猿教程 Logo

Web API Request/Response 数据格式

在这里,您将了解Web API如何处理不同格式的请求和响应数据。


Media Type

媒体类型(又名MIME类型)指定数据的类型/子类型的格式,例如type/subtype , text/html, text/xml, application/json, image/jpeg 等。

在HTTP请求,请求中指定MIME类型的方法是是在头部中使用Accept和Content-Type属性。Accept头部属性指定客户期望的响应数据的格式,Content-Type头部属性指定请求体中的数据的格式,这样接收器可以解析它转换成适当的格式。


例如,如果一个客户端希望得到JSON格式的响应数据,那么他可以按照下面的格式发送Http Get请求到Web API。

GET http://localhost:60464/api/student HTTP/1.1
User-Agent: Fiddler
Host: localhost:1234
Accept: application/json


以同样的方式,如果一个客户机在请求正文中包含需要发送到接收机的JSON数据,那么他可以发送以下POST HTTP请求,头部的Content-Type使用application/json,如下:

POST http://localhost:60464/api/student?age=15 HTTP/1.1
User-Agent: Fiddler
Host: localhost:60464
Content-Type: application/json
Content-Length: 13
{
id:1,
name:'Steve'
}

Web API将请求数据转换成CLR对象,也会序列化CLR对象成为基于Accept和Content-Type头的响应数据。Web API内置支持JSON、XML BSON,form-urlencoded数据。这意味着它会自动将请求/响应数据转换成这些格式。

参考以下简单的操作方法。

public class Student
{
    public int Id { get; set; }
    public string Name { get; set; }
}
public class StudentController : ApiController
{
    public Student Post(Student student)
    {
        // save student into db
        var insertedStudent = SaveStudent(student);
        return insertedStudent;
    }
}

正如上面你可以看到的,Action方法Post()接受学生类型参数,保存学生到数据库并返回插入学生后生成的id。上面的Web API处理带JSON或XML数据的HTTP Post请求,解析到一个基于Content-Type头的Student对象,之后它将insertedStudent对象转换为基于Accept的JSON或XML数据。

下图展示了在Fiddler中的HTTP POST请求。


在上面的图中,Accept指定响应数据为XML格式并且Content-Type指定请求数据中的学生数据是json格式。下面是在执行上述请求的响应。


用同样的方式,您可以使用accept 和 content-type 头来指定不同的请求/返回数据的格式,Web API将原封不动地处理它们。

以下HTTP POST请求发送XML格式的数据并接收JSON格式的数据。


上面的HTTP POST请求会得到以下响应。


因此,Web API默认处理JSON和XML格式的数据。

在下一节我们将学习Web API如何使用Formatters格式化请求/响应数据。



版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/webapi/web-api-reqresq-format.html