My. Net Тестовый проект Core API содержит данные, которые должны быть возвращены в формате xml, поэтому я установил и настроил XmlDataContractSerializerOutputFormatter в классе Startup,
services.AddMvc(setupAction =>
{
setupAction.ReturnHttpNotAcceptable = true;
setupAction.OutputFormatters.Add(new XmlDataContractSerializerOutputFormatter());
});
, и после установки Accept Заголовок в Postman к значению application / xml, данные возвращаются как xml, но это может быть достигнуто только для родителя и первого потомка, после этого результаты в стандартном формате JSON. Родитель с внуком
Родитель с первым ребенком
Код контроллера для авторов:
namespace Lib.Controllers
{
[Route("api/authors/{authorId}/books")]
public class BooksController : Controller
{
private ILibraryRepository _libraryRepository;
public BooksController(ILibraryRepository libraryRepository)
{
_libraryRepository = libraryRepository;
}
[HttpGet()]
public IActionResult GetBooksForAuthor(Guid authorId)
{
if (!_libraryRepository.AuthorExists(authorId))
{
return NotFound();
}
var booksForAuthorFromRepo = _libraryRepository.GetBooksForAuthor(authorId);
var booksForAuthor = AutoMapper.Mapper.Map<IEnumerable<BookDto>>(booksForAuthorFromRepo);
return Ok(booksForAuthor);
}
[HttpGet("{id}")]
public IActionResult GetBookForAuthor(Guid authorId, Guid Id)
{
if (!_libraryRepository.AuthorExists(authorId))
{
return NotFound();
}
var bookForAuthorFromRepo = _libraryRepository.GetBookForAuthor(authorId, Id);
if (bookForAuthorFromRepo == null)
{
return NotFound("The book does not exist");
}
var bookForAuthor = AutoMapper.Mapper.Map<BookDto>(bookForAuthorFromRepo);
return new JsonResult(bookForAuthor);
}
}
}
Код контроллера для книг:
namespace Lib.Controllers
{
[Route("api/authors/{authorId}/books")]
public class BooksController : Controller
{
private ILibraryRepository _libraryRepository;
public BooksController(ILibraryRepository libraryRepository)
{
_libraryRepository = libraryRepository;
}
[HttpGet()]
public IActionResult GetBooksForAuthor(Guid authorId)
{
if (!_libraryRepository.AuthorExists(authorId))
{
return NotFound();
}
var booksForAuthorFromRepo = _libraryRepository.GetBooksForAuthor(authorId);
var booksForAuthor = AutoMapper.Mapper.Map<IEnumerable<BookDto>>(booksForAuthorFromRepo);
return Ok(booksForAuthor);
}
[HttpGet("{id}")]
public IActionResult GetBookForAuthor(Guid authorId, Guid Id)
{
if (!_libraryRepository.AuthorExists(authorId))
{
return NotFound();
}
var bookForAuthorFromRepo = _libraryRepository.GetBookForAuthor(authorId, Id);
if (bookForAuthorFromRepo == null)
{
return NotFound("The book does not exist");
}
var bookForAuthor = AutoMapper.Mapper.Map<BookDto>(bookForAuthorFromRepo);
return new JsonResult(bookForAuthor);
}
}
}