POST/PATCH работает в LoopBack Explorer, но не в Postman

Я создаю приложение Angular, использующее REST API, созданное из NodeJS и LoopBack. При попытке создать новые записи я получаю странную ошибку как в своем приложении, так и в Postman. (Названия собственности были изменены, чтобы защитить невиновных)

The `ObjectName` instance is not valid. 
Details: `id` can't be blank (value: undefined); 
`property2` can't be blank (value: undefined); 
`property3` can't be blank (value: undefined).

Это то, что я опубликовал:

{
    "id":0,
    "property2":"foo",
    "property3":"bar",
    "property4":"R"
}

Самое странное в этом то, что когда я пытаюсь запустить это через LoopBack API Explorer, все работает просто отлично. У меня такие же проблемы с методами PATCH.

Какие-нибудь мысли?

Спасибо


person Chris Hampton    schedule 02.12.2017    source источник
comment
как отправляются данные через почтальона, можете ли вы опубликовать снимок экрана или что-то в этом роде   -  person Rahul Singh    schedule 02.12.2017
comment
@RahulSingh Я отправляю его на вкладке «Тело» с выбранным параметром «сырой». Вот как я всегда отправлял данные json с помощью Postman. Я не могу опубликовать скриншот, потому что у меня нет возможности размыть конфиденциальные данные.   -  person Chris Hampton    schedule 03.12.2017
comment
@ChrisHampton: Вы установили заголовки (Content-Type, Accept)? Когда вы делаете запрос через LoopBack API Explorer, он также генерирует команду curl. Эта команда curl работает для вас?   -  person Ivan Schwarz    schedule 04.12.2017
comment
@IvanSchwarz Я установил заголовки в Postman, а также в своем приложении angular, но получаю ту же ошибку. Кстати, команда curl работает просто отлично. Иди разберись...   -  person Chris Hampton    schedule 04.12.2017
comment
@ChrisHampton: Если вы открываете вкладку сети в инструментах разработчика Chrome, есть ли разница между запросом, сделанным API Explorer/curl, и запросом, сделанным Postman/вашим приложением?   -  person Ivan Schwarz    schedule 04.12.2017
comment
@IvanSchwarz Нет, не было. Тем не менее, я нашел причину. Пожалуйста, смотрите мой комментарий ниже.   -  person Chris Hampton    schedule 04.12.2017
comment
@ChrisHampton Ну, вы только что написали в своем ответе, что запрос другой. Вы отправляли другой объект JSON в своем приложении Angular. В любом случае, LoopBack не должен возвращать такую ​​ошибку, если вы добавите дополнительные свойства. Я не могу это воспроизвести. Я также до сих пор не понимаю, почему postman не работал, а curl и API Explorer работали для идентичных запросов. Я рад, что вы решили свою проблему, хотя.   -  person Ivan Schwarz    schedule 05.12.2017


Ответы (1)


Я нашел причину. В предыдущих API, с которыми я работал, серверная часть была настроена с помощью связывателя модели, который применял бы необходимые свойства и отбрасывал те, которые ему не нужны. Поэтому я обычно отправляю весь объект в POST/PUT/и т. д. В данном случае у нас этого нет, поэтому выдается эта странная ошибка. Как только я добавил метод в свой авто-сопоставитель Angular, который разделял бы объект только на самое необходимое, он работал просто отлично.

В конце концов, я мог бы понять это, если бы сообщение об ошибке было лучше.

person Chris Hampton    schedule 04.12.2017