REST API Получить и опубликовать, когда следует выбрать правильный

Я использую ASP.NET CORE и в настоящее время изучаю REST API. Итак, я знаю разницу между разными глаголами, но не могу объяснить себе одну вещь. Если у нас есть URL-адрес - /customers/{id}, и мы используем его для ПОЛУЧЕНИЯ и ОТПРАВКИ клиента. Как он мог сказать, следует ли читать или создавать нового клиента?

В контроллере я мог бы иметь это:

        [HttpGet]
        public IActionResult Customer(string id)
        {
            // not important
        }

        [HttpPost]
        public IActionResult Customer(string id)
        {
            // not important
        }

Итак, я хочу создать нового клиента и использовать /customers/{John}. Как бы он выбрал HttpPost вместо HttpGet, если они оба имеют одинаковые параметры?

Это определяется вашим интерфейсом или тем, что вызывает ваш API. Независимо от того, используете ли вы curl, fetch, axios, httpie, свой браузер или что-то еще, использующее протокол http для чтения или записи, необходимо указать, какой HTTP-глагол используется. Как вы называете свой API?

Jonas Rosenqvist 12.05.2019 15:47

Это просто сценарий, допустим, я вызываю это /customers/{id} через html-страницу, где у меня есть ввод для {id}.

Tihomir Todorov 12.05.2019 15:50
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
30
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это указывается потребителем API. Поскольку вы сказали, что вызываете его с веб-страницы, проиллюстрируйте пример с использованием javascript принести API.

ПОСТ пример:

fetch("/customers/' + custId, {
  method: 'POST', 
  body: JSON.stringify(data), //data being your customer data
  headers:{
    'Content-Type': 'application/json'
  }
}).then(res => res.json())
.then(response => console.info('Success:', JSON.stringify(response)))
.catch(error => console.error('Error:', error));

ПОЛУЧИТЬ пример:

fetch("/customers/' + custId) //if not specified, fetch defaults to GET
.then(res => res.json())
.then(response => console.info('Success:', JSON.stringify(response)))
.catch(error => console.error('Error:', error));

Хорошо, это я понимаю, спасибо. Однако, где мне указать, что запрос должен быть POST, если я являюсь клиентом и нажимаю кнопку «Создать клиента», эта кнопка должна быть связана с запросом POST, как это происходит? Если у меня те же параметры, что и в GET-запросе, как сервер узнает, какой HTTP-глагол ему следует использовать?

Tihomir Todorov 12.05.2019 16:12

Вы оборачиваете каждый из этих запросов в функцию: getCustomer(id) и createCustomer(data). Затем вы сопоставляете свою кнопку Создать клиента с последней функцией (например, onClick или onSubmit). При этом нажатие на Создать клиента отправит запрос POST на сторону сервера. На стороне сервера этот запрос будет обработан функцией, уже отмеченной [HttpPost]. Вот что означает эта аннотация; он будет обрабатывать только POST-запрос.

Jonas Rosenqvist 12.05.2019 16:25

Готово, могу я спросить, как мы добьемся этого в ASP.NET? Я полагаю, я делаю это через форму, точно так же, как <form method = "post"> // text </form>, указав, что запрос метода должен быть POST?

Tihomir Todorov 12.05.2019 16:32

Конечно, можно использовать форму. Я не знаю ASP.NET, но предполагаю, что это решение не будет специфичным для этой платформы. Вы используете обычный HTML и JavaScript на лицевой стороне, верно? Тогда да, вы можете использовать обычную отправку формы с помощью метода = "post"

Jonas Rosenqvist 12.05.2019 20:37

Здоровья, приятель! Вы были очень полезны!

Tihomir Todorov 13.05.2019 06:01

Другие вопросы по теме