问题描述
我想公开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
端点
您应该定义以下内容:
- 获取与
// GET: api/CoinJar
相符的内容 - 获取与
// GET: api/CoinJar/5
一致的id - 帖子,该帖子与
// POST: api/CoinJar/
一致,应用于插入新的CoinJar
项 - 放置,它与
// PUT: api/CoinJar/
相符,应该用于更新CoinJar
个项目 - 删除,它与
// DELETE: api/CoinJar/
一致,应该用于删除CoinJar
项
现在,根据硬币的种类与否,应该将其视为一种资源,然后您可以声明以下内容
- GetCoin,即
// GET: api/CoinJar/{id}/Coin/
- GetCoin,即
// GET: api/CoinJar/{id}/Coin/{CoinId}
- PostCoin,将是
// POST: api/CoinJar/{id}/Coin/{CoinId}
,它将在CoinJar中插入新硬币 等等
您还可以使用PUT
的{{1}}版本一次性地更新(添加硬币/重置等)硬币。这完全取决于您的需求。
仅用于接口的控制器
您的所有逻辑和接口都应在另一层(业务层)上使用。这样,您可以实现您的接口,并从您的控制器或任何其他类型的客户端中相应地使用它们。
检查这些excellent api guidelines from Microsoft以获得更多设计信息。