Если клиент отправит два разных HTTP-запроса для API, если пользователь хочет выполнить действие над своим профилем вместе с картинкой профиля - PullRequest
1 голос
/ 07 июля 2019

В данный момент я разрабатываю бэкэнд RESTful API для веб-приложения.Я не могу решить, должен ли API иметь только одну конечную точку для действий профиля (POST, UPDATE) ИЛИ одну для свойств (имя, адрес электронной почты, пароль и т. Д.) И другую для изображения профиля.

Причина, по которой я не могу решить, заключается в том, что для загрузки файла требуется составной тип контента, в то время как весь API принимает тип контента json, и я думаю, что использование другого типа контента только для конечных точек профиля может быть немного противоречивым.

1 Ответ

0 голосов
/ 08 июля 2019

Я думаю, что лучшая практика для этого сценария - использование 2-х конечных точек API, но с другим дизайном, как OP, упомянутый в вопросе.2 конечные точки API включают в себя:

  1. Конечная точка API, которая принимает все изображения, а не только изображения профиля.Эта конечная точка будет принимать загрузку файла (Content-Type как multipart/form-data) и возвращать URL-адрес загруженного файла в браузер.
  2. Конечная точка API, которая принимает все данные профиля, включая URL-адрес изображения профиля (получено из вышеуказанного API)конечная точка).Эта конечная точка будет принимать обычные текстовые данные (Content-Type как application/json или application/x-www-form-urlencoded).

В этом случае возникает проблема «анти-шаблон» (использование другого типа контента только для профиляконечных точек) не существует, и система API все еще ясна и элегантна.

На самом деле, дизайн API Stack Overflow при редактировании профиля также следует этой стратегии: изображение профиля загружается (через gravatar), изатем созданный URL-адрес используется в API редактирования данных профиля (Content-Type как application/x-www-form-urlencoded).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...