c# - 如何在 Web API 中限制 POST
问题描述
我的 SiteController.cs 文件中有以下POST
代码。
// POST: api/site
[ResponseType(typeof(site))]
public IHttpActionResult Postsite(site site)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
db.site.Add(site);
db.SaveChanges();
return CreatedAtRoute("DefaultApi", new { id = site.id }, site);
}
我有一个 Web 表单,我在其中使用代码到POST
我的数据库中 Site 表的字段。
在数据库(以及我的 site.cs 类)中,Site 有 5 个属性:ID、Name、City、State 和 Country。当我使用POST
它添加到此表中的表单时。
我想要做的是检查POST
上面的代码,如果Name
该类的属性在表/API 结果中已经存在该名称。我将如何使这种POST
方法能够进行此检查?
我试过做类似的事情if site.name == (???)
然后抛出一个错误,但我不确定 (???) 中会发生什么来检查 API 的其余结果。
解决方案
先检查记录是否存在
if(!db.site.Any(s => s.Name == site.name))
{
db.site.Add(site);
db.SaveChanges();
}
如果您想获取状态,这里有一些示例代码:
// POST: api/site
public HttpResponseMessage Postsite(site site)
{
if(!db.site.Any(s => s.Name == site.name))
{
db.site.Add(site);
db.SaveChanges();
var message = Request.CreateResponse(HttpStatusCode.Created, site);
message.Headers.Location = new Uri(Request.RequestUri + site.Id.ToString());
return message;
}
else
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex);
}
}
推荐阅读
- salesforce - MuleSoft Salesforce Upsert 连接器是否支持 allOrNone?
- c++ - 使用随机值运行测试有时会因 SIGABT 崩溃。如何在c ++中暴露超出数组范围的错误
- python - 使用返回 True/False 的 if 语句而不是直接将条件表达式转换为 bool 的技术原因
- kubernetes - 使用 kubernetes 执行器时找不到 Airflow-dag_id 问题
- docker - 带有入口控制器的动态路由
- javascript - 如何创建动态 HTML 文件并使用 javascript 将其发送到电子邮件
- c# - SSL 证书格式
- c# - Quickbooks Online API - 提供发票 ID 时付款“未应用”
- java - OSGi 中仅运行时依赖项的最佳实践
- html - 我的页脚不在页面底部