asp.net 핵심 API에서 즐겨 찾기를 추가하고 삭제하는 방법

피터 에디 모

ASP.net API로 뉴스 애플리케이션을 개발합니다. 사용자가 즐겨 찾기 기사를 추가하고 삭제할 수 있기를 바랍니다. 다음과 같은 즐겨 찾기 모델을 만들었습니다.

public class Favorites{

   public String userId {get; set;}
   public UserEntity User {get; set;}
   public int articleId {get; set; }
   public virtual Article article {get; set;}

}

dotnet fluentapi로 초기화했습니다.

modelBuilder.Entity<Favorites>().HasKey(a => new{ a.articleId, a.userId }); 

이것이 컨트롤러의 모습입니다.

 public class FavoritesController : ControllerBase
    {
        private readonly DatabaseContext _context;

        public FavoritesController(DatabaseContext context)
        {
            _context = context;

            _context.Database.EnsureCreated(); 
        }

        // GET: api/Favorites
        [HttpGet(Name = nameof(GetAllFavorites))]
        public async Task<ActionResult<IEnumerable<FavoriteDTo>>> GetAllFavorites( [FromQuery] NewRoomQueryParameters queryParameter)
        {
            IQueryable<Favorites> favs = _context.Favorites;

            if (!string.IsNullOrEmpty(queryParameter.sortBy))
            {
                if (typeof(Favorites).GetProperty(queryParameter.sortBy) != null)
                {
                    favs = favs.OrderByCustom(queryParameter.sortBy, queryParameter.SortOrder);
                }
            }

           if (!string.IsNullOrEmpty(queryParameter.userId))
            {
                favs = favs.Where(p => p.userId == queryParameter.userId);
            }

            return await favs.Include(a => a.Article)
                               .ThenInclude(a => a.Author)
                              .Include(a => a.Article)
                                .ThenInclude(a => a.Comments)
                             .Select(x => favoriteToDTo(x)).ToListAsync(); 
        }

        // GET: api/Favorites/5
        [HttpGet("{id}")]
        public async Task<ActionResult<FavoriteDTo>> GetFavorites(int id)
        {
            IQueryable<Favorites> favs = _context.Favorites; 

            var favorites = await favs.Include(x => x.Article).FirstOrDefaultAsync(x => x.articleId == id ) ;

            if (favorites == null)
            {
                return NotFound();
            }

            return favoriteToDTo(favorites);
        }

   
        // POST: api/Favorites
        // To protect from overposting attacks, see https://go.microsoft.com/fwlink/?linkid=2123754
        [HttpPost]
        public async Task<ActionResult<FavoriteDTo>> PostFavorites(FavoriteDTo favDTo)
        {
            var fav = new Favorites
            {
                articleId = favDTo.articleId, 
                userId = favDTo.userId
            }; 

            _context.Favorites.Add(fav);
            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateException)
            {
                if (FavoritesExists(fav.articleId))
                {
                    return Conflict();
                }
                else
                {
                    throw;
                }
            }

            return CreatedAtAction(nameof(GetFavorites), new { id = fav.articleId }, fav);
        }

        // DELETE: api/Favorites/5
        [HttpDelete("{id}")]
        public async Task<IActionResult> DeleteFavorites(int id)
        {
            var favorites = await _context.Favorites.FindAsync(id);
            if (favorites == null)
            {
                return NotFound();
            }

            _context.Favorites.Remove(favorites);
            await _context.SaveChangesAsync();

            return NoContent();
        }

        private static FavoriteDTo favoriteToDTo(Favorites favorites) => new FavoriteDTo
        {
            articleId = favorites.articleId,
            Article = favorites.Article,
            User = favorites.User,
            userId = favorites.userId
        }; 

        private bool FavoritesExists(int id)
        {
            return _context.Favorites.Any(e => e.articleId == id);
        }
    }

즐겨 찾기를 추가 할 수 있습니다. 하지만 제거 할 수 없습니다. 누군가 나를 도울 수 있습니까? 이 기능을 구현하는 좋은 방법이 아니라면 올바른 방법으로 수행하는 방법을 배우고 싶습니다.

난 타루 판

즐겨 찾기 삭제 방법에 따라 다릅니다. 사용자의 즐겨 찾기에서 기사를 삭제하려면

[HttpDelete("{id}")]
    public async Task<IActionResult> DeleteFavoritesForUser(int Articleid, string userId)
    {
        var favorites = await _context.Favorites.FindBy(x=>x.UserId ==userId && x=>x.ArticleId ==Articleid);
        if (favorites == null)
        {
            return NotFound();
        }

        _context.Favorites.RemoveRange(favorites);
        await _context.SaveChangesAsync();

        return NoContent();
    }

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

하위 경로에서 Asp.net 핵심 사이트를 찾는 방법

분류에서Dev

asp.net 핵심 서비스에서 * 키워드를 사용하는 방법.

분류에서Dev

Microsoft Edge에서 즐겨 찾기를 구성하는 방법

분류에서Dev

VB.NET에서 즐겨 찾기 시스템을 코딩하는 방법

분류에서Dev

"즐겨 찾기에 추가"를 만들고 Swift 4에서 즐겨 찾기 목록에 표시하는 방법은 무엇입니까?

분류에서Dev

페이지를 먼저로드하지 않고 즐겨 찾기를 즐겨 찾기에 추가하는 방법은 무엇입니까? (Internet Explorer, Firefox)

분류에서Dev

핵심 데이터가있는 즐겨 찾기 테이블보기에 셀 추가

분류에서Dev

즐겨 찾기에 Eclipse를 추가하는 방법은 무엇입니까?

분류에서Dev

즐겨 찾기에 Eclipse를 추가하는 방법은 무엇입니까?

분류에서Dev

iOS 앱에서 '즐겨 찾기'버튼을 추가하는 방법

분류에서Dev

DbContext fom asp.net 핵심 서비스에 액세스하는 방법

분류에서Dev

asp.net 핵심 애플리케이션에서 경로를 설정하는 방법

분류에서Dev

Twitter API를 사용하여 트윗을 즐겨 찾기에 추가하는 방법

분류에서Dev

서식있는 텍스트 편집기를 추가하여 Asp.net 핵심 MVC 내부에 서식있는 HTML을 추가하고 표시합니다.

분류에서Dev

즐겨 찾기에서 링크를 시작할 때 경고를 억제하는 방법

분류에서Dev

Swift 2.0에서 핵심 데이터 TableView를 삭제하는 방법

분류에서Dev

장고에서 즐겨 찾기 목록을 표시하는 방법

분류에서Dev

(장고 / HTML) 즐겨 찾기 기능에 추가 생성 방법

분류에서Dev

vue.js 2에서 즐겨 찾기-즐겨 찾기 버튼을 추가하는 방법은 무엇입니까?

분류에서Dev

Gnome Shell의 즐겨 찾기 모음에 폴더를 추가하는 방법은 무엇입니까?

분류에서Dev

Gnome Shell의 즐겨 찾기 모음에 폴더를 추가하는 방법은 무엇입니까?

분류에서Dev

Windows 10 Insider Preview의 즐겨 찾기에 내 폴더를 추가하는 방법은 무엇입니까?

분류에서Dev

IIS 7.5에 asp.net 핵심 웹 API를 배포하는 동안 500 오류

분류에서Dev

텍스트 상자의 크기를 변경하는 방법, asp.net 핵심 기본 템플릿에서 길게 만들기

분류에서Dev

Ruby on Rails에서 프런트 엔드에 즐겨 찾기 버튼을 추가하는 적절한 방법

분류에서Dev

기존 .proto 파일을 .net 핵심 프로젝트에 대한 링크로 추가하는 방법

분류에서Dev

* .csproj의 .net 핵심 프로젝트에 규칙을 추가하는 방법

분류에서Dev

db2 : 즐겨 찾기 / 선호 db에 연결하는 방법?

분류에서Dev

MySQL 데이터베이스에서 '즐겨 찾기'관계를 구현하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    하위 경로에서 Asp.net 핵심 사이트를 찾는 방법

  2. 2

    asp.net 핵심 서비스에서 * 키워드를 사용하는 방법.

  3. 3

    Microsoft Edge에서 즐겨 찾기를 구성하는 방법

  4. 4

    VB.NET에서 즐겨 찾기 시스템을 코딩하는 방법

  5. 5

    "즐겨 찾기에 추가"를 만들고 Swift 4에서 즐겨 찾기 목록에 표시하는 방법은 무엇입니까?

  6. 6

    페이지를 먼저로드하지 않고 즐겨 찾기를 즐겨 찾기에 추가하는 방법은 무엇입니까? (Internet Explorer, Firefox)

  7. 7

    핵심 데이터가있는 즐겨 찾기 테이블보기에 셀 추가

  8. 8

    즐겨 찾기에 Eclipse를 추가하는 방법은 무엇입니까?

  9. 9

    즐겨 찾기에 Eclipse를 추가하는 방법은 무엇입니까?

  10. 10

    iOS 앱에서 '즐겨 찾기'버튼을 추가하는 방법

  11. 11

    DbContext fom asp.net 핵심 서비스에 액세스하는 방법

  12. 12

    asp.net 핵심 애플리케이션에서 경로를 설정하는 방법

  13. 13

    Twitter API를 사용하여 트윗을 즐겨 찾기에 추가하는 방법

  14. 14

    서식있는 텍스트 편집기를 추가하여 Asp.net 핵심 MVC 내부에 서식있는 HTML을 추가하고 표시합니다.

  15. 15

    즐겨 찾기에서 링크를 시작할 때 경고를 억제하는 방법

  16. 16

    Swift 2.0에서 핵심 데이터 TableView를 삭제하는 방법

  17. 17

    장고에서 즐겨 찾기 목록을 표시하는 방법

  18. 18

    (장고 / HTML) 즐겨 찾기 기능에 추가 생성 방법

  19. 19

    vue.js 2에서 즐겨 찾기-즐겨 찾기 버튼을 추가하는 방법은 무엇입니까?

  20. 20

    Gnome Shell의 즐겨 찾기 모음에 폴더를 추가하는 방법은 무엇입니까?

  21. 21

    Gnome Shell의 즐겨 찾기 모음에 폴더를 추가하는 방법은 무엇입니까?

  22. 22

    Windows 10 Insider Preview의 즐겨 찾기에 내 폴더를 추가하는 방법은 무엇입니까?

  23. 23

    IIS 7.5에 asp.net 핵심 웹 API를 배포하는 동안 500 오류

  24. 24

    텍스트 상자의 크기를 변경하는 방법, asp.net 핵심 기본 템플릿에서 길게 만들기

  25. 25

    Ruby on Rails에서 프런트 엔드에 즐겨 찾기 버튼을 추가하는 적절한 방법

  26. 26

    기존 .proto 파일을 .net 핵심 프로젝트에 대한 링크로 추가하는 방법

  27. 27

    * .csproj의 .net 핵심 프로젝트에 규칙을 추가하는 방법

  28. 28

    db2 : 즐겨 찾기 / 선호 db에 연결하는 방법?

  29. 29

    MySQL 데이터베이스에서 '즐겨 찾기'관계를 구현하는 방법은 무엇입니까?

뜨겁다태그

보관