コード例 #1
0
        public ActionResult <DeckDto> GetDeck(int deckId,
                                              [FromHeader(Name = "Accept")] string mediaType)
        {
            if (!MediaTypeHeaderValue.TryParse(mediaType,
                                               out MediaTypeHeaderValue parsedMediaType))
            {
                return(BadRequest());
            }

            var includeLinks = parsedMediaType.SubTypeWithoutSuffix
                               .EndsWith("hateoas", StringComparison.InvariantCultureIgnoreCase);

            var deckFromRepo = _flashCardRepository.GetDeck(deckId);

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

            var deckToReturn = _mapper.Map <DeckDto>(deckFromRepo);

            if (!includeLinks)
            {
                return(Ok(deckToReturn));
            }

            var links         = CreateLinksForDeck(deckId);
            var deckWithLinks = new DeckDtoWithLinks(deckToReturn, links);

            return(Ok(deckWithLinks));
        }
コード例 #2
0
        public ActionResult <DeckDto> CreateDeck(DeckForCreationDto deck,
                                                 [FromHeader(Name = "Accept")] string mediaType)
        {
            if (!MediaTypeHeaderValue.TryParse(mediaType,
                                               out MediaTypeHeaderValue parsedMediaType))
            {
                return(BadRequest());
            }

            var includeLinks = parsedMediaType.SubTypeWithoutSuffix
                               .EndsWith("hateoas", StringComparison.InvariantCultureIgnoreCase);

            var deckEntity = _mapper.Map <Entities.Deck>(deck);

            _flashCardRepository.AddDeck(deckEntity);
            _flashCardRepository.Save();

            var deckToReturn = _mapper.Map <DeckDto>(deckEntity);

            if (!includeLinks)
            {
                return(CreatedAtRoute(nameof(GetDeck),
                                      new { deckId = deckToReturn.Id },
                                      deckToReturn));
            }

            var links         = CreateLinksForDeck(deckToReturn.Id);
            var deckWithLinks = new DeckDtoWithLinks(deckToReturn, links);

            return(CreatedAtRoute(nameof(GetDeck),
                                  new { deckId = deckToReturn.Id },
                                  deckWithLinks));
        }