在前一天我有提到如何将Web Api 加入 Swagger
今天就来实作一个会员查询资料的POST 方法的 Web Api
1.预想Json格式呼叫(传入)的方法为
{
"MemberId": "1111",
"MemberName": "11111",
}
2.建立会员Model模板
public class Member
{
/// <summary>
/// 会员编号
/// </summary>
[Display(Name = "会员编号")]
[StringLength(10, ErrorMessage = "{0}的长度至少必须为{2}的字元。", MinimumLength = 0)]
public string MemberId { get; set; }
/// <summary>
/// 会员姓名
/// </summary>
[Display(Name = "会员姓名")]
[StringLength(10, ErrorMessage = "{0}的长度至少必须为{2}的字元。", MinimumLength = 0)]
public string MemberName { get; set; }
}
3.预想Json格式呼叫(传出)的方法为
{
"code": "S001",
"message": "查询成功",
"stauts": "成功",
"data": [
{
"memberId": "1111",
"memberName": "Yaowen"
}
]
}
4.建立传出Model模板
public class Result2<T>
{
public string Code { get; set; }
public string Message { get; set; }
public string Stauts { get; set; }
public List<T> Data { get; set; } = new List<T>();
}
5.Controller 开始写逻辑
#region 查询会员资料
/// <summary>
/// 查询会员资料
/// </summary>
/// <response code="S001">查询成功</response>
/// <response code="E001">查无资料</response>
/// <response code="E002">不在效期内</response>
/// <response code="E003">未知错误</response>
/// <remarks>
/// {
/// "MemberId": "1111",
/// "MemberName": "11111",
/// }
/// </remarks>
[HttpPost("GetMember")]
public Result2<MemberData> GetMember([FromBody] Member member)
{
var Config = new Config();
Config.connectionString = _config.GetValue<string>("connectionString");
Result2<MemberData> result = new Result2<MemberData>();
if (String.IsNullOrEmpty(member.MemberId) && String.IsNullOrEmpty(member.MemberName))
{
result.Code = "E001";
result.Message = "查无资料";
result.Stauts = "失败";
return result;
}
try
{
using (var conn = new MySqlConnection(Config.connectionString))
{
conn.Open();
using (var command = conn.CreateCommand())
{
command.CommandText = "SELECT MemberId,MemberName FROM Member WHERE 1 = 1 ";
if (!String.IsNullOrEmpty(member.MemberId))
{
command.CommandText += " And memberid like @MmeberId ";
command.Parameters.AddWithValue("@MmeberId", "%" + member.MemberId);
}
if (!String.IsNullOrEmpty(member.MemberName))
{
command.CommandText += " And MemberName like @MemberName ";
command.Parameters.AddWithValue("@MemberName", "%" + member.MemberName);
}
using (var reader = command.ExecuteReader())
{
if (reader.HasRows)
{
result.Code = "S001";
result.Message = "查询成功";
result.Stauts = "成功";
while (reader.Read())
{
result.Data.Add(new MemberData() {
MemberId = (reader.IsDBNull(reader.GetOrdinal("MemberId"))) ? "" : (string)reader["MemberId"],
MemberName = (reader.IsDBNull(reader.GetOrdinal("MemberName"))) ? "" : (string)reader["MemberName"]
});
}
return result;
}
else
{
result.Code = "E001";
result.Message = "查无资料";
result.Stauts = "失败";
return result;
}
}
}
}
}
catch (Exception ex)
{
result.Code = "E003";
result.Message = ex.Message;
result.Stauts = "未知错误";
return result;
}
}
#endregion
注解:Controller 可以另外拆开把逻辑的部分放在Model底下(正常资料库存取部分是要放在Model底下),但这边快速讲解流程故逻辑先写在Controller底下
6.使用PostMan进行测试
7.或者可以使用Swagger进行测试
在没有网路的年代,人们获取资讯的来源可能是报章杂志、广播电视等等,报章杂志的排版需要符合出版业的要求...
到这里,这趟旅程也已经接近尾声了,但是好用的工具却不只有这些,在这些工具之外还有许多的遗珠之憾,有些...
我们的系统架构很单纯,分为托管在 Vercel 上的 Next.js 前端,以及托管在 BlueHo...
本文同步更新於blog 情境:玉皇大帝要举办渡河比赛,动物选手各显神通。 <?php na...
在前面介绍 C# 代码结构的时候,我们有提高过一下类(class),下面我们来看一下,如何定义一个类...