如何在C#Web服务中公开3个端点? CoinJarController端点仅用于接口的控制器

问题描述

我想公开3个端点(“添加到硬币”,“获取硬币总数”,“重置硬币”),但是我很难在此方面实现此操作,因为我有接口,需要一些帮助,到目前为止,这是我的逻辑。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CoinJaraPI.Interface
{
    interface ICoinJar
    {
        void AddCoin(ICoin coin);
        decimal GetTotalAmount();
        void Reset();
    }

    public interface ICoin
    {
        decimal Amount { get; set; }
        decimal Volume { get; set; }
    }
}

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

using CoinJaraPI.Models;

namespace CoinJaraPI.Controllers
{
    public class CoinJarController : ApiController
    {
        // GET: api/CoinJar
        public IEnumerable<CoinJarModel> Get()
        {
            var coinJarList = new List<CoinJarModel>();
            for (int i = 0; i < 10; i++)
            {
                var coinjarModel = new CoinJarModel
                {
                    // volume,Amount,GetTotalAmount.
                };
            }
            return coinJarList;
        }

        // GET: api/CoinJar/5
        public string Get(int id)
        {
            return "value";
        }

    }
}

解决方法

取决于您要遵循的内容。如果您的实施完全是100%的休息,那么:

CoinJarController端点

您应该定义以下内容:

  1. 获取与// GET: api/CoinJar相符的内容
  2. 获取与// GET: api/CoinJar/5一致的id
  3. 帖子,该帖子与// POST: api/CoinJar/一致,应用于插入新的CoinJar
  4. 放置,它与// PUT: api/CoinJar/相符,应该用于更新CoinJar个项目
  5. 删除,它与// DELETE: api/CoinJar/一致,应该用于删除CoinJar

现在,根据硬币的种类与否,应该将其视为一种资源,然后您可以声明以下内容

  1. GetCoin,即// GET: api/CoinJar/{id}/Coin/
  2. GetCoin,即// GET: api/CoinJar/{id}/Coin/{CoinId}
  3. PostCoin,将是// POST: api/CoinJar/{id}/Coin/{CoinId},它将在CoinJar中插入新硬币 等等

您还可以使用PUT的{​​{1}}版本一次性地更新(添加硬币/重置等)硬币。这完全取决于您的需求。

仅用于接口的控制器

您的所有逻辑和接口都应在另一层(业务层)上使用。这样,您可以实现您的接口,并从您的控制器或任何其他类型的客户端中相应地使用它们。

检查这些excellent api guidelines from Microsoft以获得更多设计信息。