创建 初级Web API 项目

1.项目浅层结构介绍

  • Models文件夹
    • 存放Models 文件夹放置的是结构化对象——模型,比如返回的json结构化对象,是通过models定义的模型读取序列化格式,它就可以反序列化对象。 大多数客户端可以分析 XML 或 JSON。
  • Controllers 文件夹
    • 存放设计的控制器,在 Web API 中,控制器是处理 HTTP 请求的对象,如果你懂MVC控制器,那么你应该能理解controllers 文件夹内定义的控制器与ASP.NET MVC不同,Web API 控制器类似于 MVC 控制器,但继承 ApiController 类而不是 Controller 类。

2. 创建一个空的Web API应用程序

新建ASP.NET Web 应用程序

选择空模板

3.利用模型和控制器实现数据资源的访问

添加模型

前面我们有说模型是结构化对象,这个对象我们既可以将数据序列化发送,也可以利用它反序列化读存。

namespace ProductsApp.Models
{
    public class Product //商品模型
    {
        public int Id { get; set; } //商品id
        public string Name { get; set; } //商品名称
        public string Category { get; set; } // 类别
        public decimal Price { get; set; }//价格
    }
}

添加控制器

我们使用上述模型定义了三条结构化对象,并且重载了两个GET方法。

GET是固定前缀,因为会根据前缀是GET或者是POST等其他谓词方法识别方法的调用。

有人可能会疑问,既然是重载,为什么这两个方法名称不一样呢?从IEnumble<Product>,也能看出来Product是一个可迭代的集合,适宜根据规则GetAll这个前缀表明这个方法返回的是一个集合,s则是Product这个资源的复数形式,应该是属于固定搭配了。

第二个重载方法就比较明确了,它接受一个id,如果满足对象的Id匹配到我们传入的id(p => p.Id == id),则返回这个资源,否则为null.

using ProductsApp.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Web.Http;

namespace ProductsApp.Controllers
{
    public class ProductsController : ApiController
    {
        Product[] products = new Product[] 
        { 
            new Product { Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1 }, 
            new Product { Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M }, 
            new Product { Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M } 
        };

        public IEnumerable<Product> GetAllProducts()
        {
            return products;
        }

        public IHttpActionResult GetProduct(int id)
        {
            var product = products.FirstOrDefault((p) => p.Id == id);
            if (product == null)
            {
                return NotFound();
            }
            return Ok(product);
        }
    }
}
get方法URL
GetProducthttps://localhost:{你的端口号}/api/Products
GetAllProductshttps://localhost:{你的端口号}/api/Products/id

具体情况请看下图

注:本人只是一个初学者,若有不正确的地方,请帮忙指正。

  • 13
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值