Как я могу указать при создании веб-запроса, что я хочу получать определенные поля от [FromBody]

#c# #entity-framework

#c# #entity-framework

Вопрос:

Я создаю веб-службу для аутентификации пользователя. (Я новичок в c #, использующий entity framework core)

     [HttpPost, Route("login")]
    public async Task<ActionResult<Usuario>> Login([FromBody] User user) 
    {
      
    }
  

у моего пользователя модели есть следующие поля:

 {
 name,
 password,
 phone,
 email
}
  

Я не знаю, как указать, чтобы со стороны клиента мои пользователи могли видеть поля, которые должен получать мой веб-сервис, и когда я использую какой-либо плагин для документирования моего API, было ясно видно, что мне нужно только name для отправки и password только.

Я думаю о чем-то подобном, я надеюсь заставить себя понять:

 public async Task<ActionResult<Usuario>> Login([FromBody] string email, [FromBody] string password) 
  

таким образом, когда API задокументирован, я хотел бы, чтобы было понятно, что вам нужно отправлять email и password только

и так со стороны клиента

 {"password": "212346", "email": "myemail@hotmail.com" } 
  

отправляется

Ответ №1:

Ваша модель представления должна содержать ТОЛЬКО поля, требуемые для каждого метода API. Если в вашем запросе есть поля, которые не являются обязательными, их не должно быть в теле метода. Если вы используете что-то вроде Swagger для документирования вашего API, то он покажет только поля, требуемые для каждого метода.

Обычно я слышу подобные вопросы, когда разработчик пытается использовать DTO или даже объект базы данных в качестве модели представления (оба из которых являются неправильным использованием).

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