Почтальон возвращает 415 при попытке сделать POST с использованием данных формы, но тот же запрос с JSON работает нормально - PullRequest
0 голосов
/ 22 февраля 2020

Я создаю REST API и тестирую его с помощью Postman. У меня есть конечная точка, которая отлично работает, когда я тестирую ее, отправляя необработанные json данные, но я хочу расширить эту конечную точку и позволить ей принимать как json данные, так и принимать файл, поэтому я хотел проверить моя текущая конечная точка без каких-либо изменений, и посмотреть, получу ли я тот же результат, когда я протестирую свой API с использованием данных формы вместо JSON, но всегда выдает исключение 415.

На этом рисунке я сделать запрос с данными формы.

Form-data request

И здесь я делаю запрос к той же конечной точке, но с json данными

JSON post data request

Обратите внимание, что я не добавил никаких таможенных заголовков при отправке запросов, (10), который вы видите вверху, это Временные заголовки. Я также попытался добавить Content-Type: multipart / form-data, но получил тот же результат.

Вот код, стоящий за

PeopleController.cs

[HttpPost]
    public ActionResult<PersonDto> PostPerson(PersonForCreationDto person)
    {
        var personEntity = _mapper.Map<Entities.Person>(person); //Maps PersonForCreationDto to Entites.Person. This is possible because of the mapping in PeopleProfile.cs
        _personLibraryRepositry.AddPerson(personEntity);
        _personLibraryRepositry.Save();

        var personToReturn = _mapper.Map<PersonDto>(personEntity);

        return CreatedAtRoute("GetPerson",
            new { personId = personToReturn.PersonId },
            personToReturn);
    }

PersonForCreationDto

public class PersonForCreationDto
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Address { get; set; }
        public string ReasonsForBeingOnTheList { get; set; }

        public ICollection<PictureForCreationDto> Pictures { get; set; }
            = new List<PictureForCreationDto>();


    }

PersonLibraryRepository.cs

 public void AddPerson(Person person)
    {
       if (person == null)
        {
            throw new ArgumentNullException(nameof(person));
        }

        person.PersonId = Guid.NewGuid(); //API is responsibile for creating new IDS.

            foreach (var picture in person.Pictures)
            {
                picture.PictureId = Guid.NewGuid();

            }
        _context.People.Add(person);
    }

1 Ответ

0 голосов
/ 22 февраля 2020

В данных формы добавьте это в заголовки

Content-Type: application/json
...