Я недавно программист-самоучка, поэтому, пожалуйста, прости мое невежество, мое отсутствие знаний и мою неспособность правильно объяснить себя ...
Я создаю API, который имеет отношение один ко многим. Его целью является получение адресов электронной почты для списков подавления электронной почты.
API должен иметь функцию POST, которая отправляет данные в две таблицы с именами SuppressionListNames и SuppressionListEmails. Также требуется функция удаления для удаления писем из SuppressionListEmails.
Необходимо указать имя списка подавления и адрес электронной почты.
Таблица SuppressionListNames должна принимать имя списка подавления, а почта SuppressionListEmail должна иметь как адрес электронной почты, так и имя списка подавления.
Обе таблицы должны иметь поля InsertDateTime, которые регистрируют, когда запись была добавлена в базу данных.
Я никогда не делал этого раньше ... Я построил только четыре API один на один. Я попробовал несколько уроков и смог собрать воедино то, что вы видите перед собой.
Вот основные источники, которые я использовал для создания этого:
https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/getting-started-with-ef-using-mvc/creating-a-more-complex-data-model-for-an-asp-net-mvc-application
https://www.youtube.com/watch?v=bFbb8Wetq2o
У меня возникают проблемы с правильным кодированием моделей, и я не знаю, как даже запустить контроллер ... В настоящее время контроллер построен точно так же, как предыдущий проект, который я построил. Это здесь как отправная точка, но я понятия не имею, куда идти отсюда ...
Вот модель SuppressionListName:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;
using CustomOAuthTutorial.WebAPI.Models;
namespace CustomOAuthTutorial.WebAPI.Models
{
public class SuppressionListName
{
[Key]
public int SuppressionId { get; set; }
public string ListName { get; set; }
public string InsertDateTime { get; set; }
public IList<SuppressionListEmail> SuppressionEmails { get; set; }
}
}
Вот модель SuppressionListEmails:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;
using CustomOAuthTutorial.WebAPI.Models;
namespace CustomOAuthTutorial.WebAPI.Models
{
public class SuppressionListEmail
{
[Index(IsUnique = true)]
[Key]
public int Id { get; set; }
public virtual SuppressionListName SuppressionListName { get; set; }
[ForeignKey("SuppressionId")]
public IList<SuppressionListName> SuppressionId { get; set; }
public string SuppressionEmails { get; set; }
public string ListName { get; set; }
public string InsertDateTime { get; set; }
}
}
Вот контроллер Suppression:
using CustomOAuthTutorial.WebAPI.Models;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Timers;
using System.Data.Entity;
using System.Threading.Tasks;
using System.Web.Http.Results;
using M1_Data;
using System.Security.Claims;
using System.Security.Cryptography;
using System.Web.Http.ModelBinding;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.AspNet.Identity.Owin;
using Microsoft.Owin.Security;
using Microsoft.Owin.Security.Cookies;
using Microsoft.Owin.Security.OAuth;
using CustomOAuthTutorial.WebAPI.Providers;
using CustomOAuthTutorial.WebAPI.Results;
using CustomOAuthTutorial.WebAPI.Utilities;
using System.Configuration;
using System.Net;
namespace CustomOAuthTutorial.WebAPI.Controllers
{
public class SuppressionController : ApiController
{
private AppDBContext db;
public SuppressionController()
{
db = new AppDBContext();
}
// POST: api/Suppression
[HttpPost]
// [Route("api/post/Suppression")]
public IHttpActionResult PostSuppression(SuppressionListEmail suppressionListEmail)
{
try
{
// SuppressionListEmail suppressionListEmail =
// IEnumerable<SuppressionListEmail> PostSuppression = Suppression(SuppressionListName, SuppressionEmails);
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
db.SuppressionListEmails.Add(suppressionListEmail);
db.SaveChanges();
return Ok();
}
catch (Exception ex)
{
return Content(HttpStatusCode.OK, string.Format("{0}", ex));
}
}
}
}
Когда я пытаюсь использовать этот вызов API POST (http://localhost:1661/api/SuppressionListEmail?SuppressionListName=testlist&SuppressionEmails=email@email.com) в Почтальоне, я получаю следующее:
"Message": "No HTTP resource was found that matches the request URI 'http://localhost:1661/api/SuppressionListEmail?SuppressionListName=testlist&SuppressionEmails=email@email.com'.",
"MessageDetail": "No type was found that matches the controller named 'SuppressionListEmail'."
}
Что имеет смысл, потому что я знаю, что модели и контроллер не настроены правильно ... Я, к сожалению, слишком неопытен, чтобы знать, как заставить его работать правильно ...
Большое спасибо за чтение! Я очень ценю ваше время. :)