Вход | Регистрация
 

Как в Swagger правильно описать запрос

Как в Swagger правильно описать запрос
Я
   Sin_city
 
31.05.21 - 14:58
Я уже стреляюсь....



Нужен CURL запрос определенного вида.



curl -X 'POST' \
'https://a**********net/company/get-m*****r-details' \
-H 'accept: application/json' \
-H 'Authorization: Bearer 616a2cbbc392c798***1dae2bd0c2093af4f399e95f48d' \
-H 'Content-Type: application/json' \
-d '{
"name": "Dmitriy"
}'



Swagger в итоге делает и это конечно. Большие вопросы у меня с секцией -d



1. Каким оператором внутри Swagger  я вообще определяю, как у меня -d будет собираться. Сам я смог создать "дуромер" (брал за пример PET), Т.е. в коде жестко прописываешь (в моем случае "example: Dmitriy", перед нажатием на Execute есть возможность переписать как угодно и будет соответствующий запрос.

      parameters:
      - in: path
        name: name
        description: Имя
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:  
            schema:
              type: "object"
              properties:
                name:
                  description: Update
                  type: string
                  example: Dmitriy
              required:
                - name

2. Не устраивают следующее:
Есть специальное поле в разделе "Parameters"

Так вот, в итоге получается у меня 2 поля, и в CURL запрос идет то, что я ввел в поле "request body"

Что я вводил в "Parameters" там не передается в поле "request body" и как следствие в CURL

Разумеется. я хочу отобразить в JSon то, что я ввел в соответствующее поле в разделе "Parameters".



Как сделать?



3. Я скачал несколько Yaml файлов у серьезных компаний, например интернет магазин "Шелл".

Но там       requestBody    не используется или  используется, но совсем не так.



Как мне победить Swagger?

Например как передавать {name} в графу в предпоследнюю строку с  "example"  Как только не пробовал, никак. В залоловок - пожалуйста.



Еще оно на меня ругается. Это туда же

Path parameter "name" must have the corresponding {name} segment in the "/c************all" path
 
 Партнерская программа EFSOL Oblako
   Kesim
 
1 - 31.05.21 - 15:03
postman в помощь (делаешь интуитивно потом результат можно получить в нескольких форматах, в том числе курл)
   Sin_city
 
2 - 31.05.21 - 15:21
В постмане все работает. На сервере (через PHP файлы все работает). И В Swaggere все работает.
Но там (в Swaggere) получается 2 поля. Ввод значения и отправка JSON запроса. Так вот, Уходит JSON
А ожидает юзер, что уйдет значение что он вводил.

Я же ожидаю, что Json должен измениться перед оправкой
   Вафель
 
3 - 31.05.21 - 16:38
Передавай не жсон, а x-url-encoded
   Вафель
 
4 - 31.05.21 - 16:40
Нет не так, ты в строке сервера не указал name
   Sin_city
 
5 - 31.05.21 - 17:21
Проблема увы не с тем что он не передает, он передает и все работает. Проблема с тем, что ОНО передается не совсем то что я хочу.
Да, у меня есть возможность изменить.... Но как то не то

Мне для руководства нужен JSON, так как вся документация на JSONах.
   Sin_city
 
6 - 31.05.21 - 17:28
Есть два поля
"Имя сотрудника", секция Parameters. ТАм я могу ввести что хочу, например Igor

Секция "Request body". Там Json, который собирается из кода (Example). Там стоит по умолчанию "Dmitriy"
Перед "смертью" (перед запросом) юзер может зайти в поле "Request body" и как угодно поле изменить.
Однако если он не поменяет, то уйдет в запрос "Dmitriy"

Ни одному идиоту не придет в голову после того, как он ввел имя в нужное поле еще раз ввести то же самое в другое поле. при том что JSON чуть сложнее чем поле ввода параметров.

Поэтому работать будет то что я сделал условно неправильно (но если смотреть PetShop, с его копировал, то у них так сделано всегда). И вообще нет раздела "Parameters"

Я поверить не могу, что в example: "что нибудь" я никак не могу вставить {name} В моем случае это "igor"
При том что в Header я вытаскиваю {name} на раз.
   Asmody
 
7 - 31.05.21 - 17:56
Parameters in path означает, что твои параметры будут частью URL, причем именно как часть имени ресурса, а не параметры в смысле http.
   Asmody
 
8 - 31.05.21 - 17:58
Ключ -d в curl – это тело запроса
Собственно, там ты передаешь свой json или что-то другое.
   Sin_city
 
9 - 31.05.21 - 18:20
- in: path
У меня есть. Но передается не то что красным, а то что зеленым. Зеленое меня берется из Example.
Да, есть возможность желтое поправить перед отправкой. Но я думаю что эта штука (Swagger) должна работать более элегантно и передавать и в запрос, и в CURL то, что выделено сейчас красным.

К удивлению изменение изменение "красного" не приводит к изменению "зеленого". А мне надо...
Сюда нельзя вставлять картинки, я залил на файлообменник. Тут и красное и зеленое. Кто хоть раз видел Swagger, тому все понятно
https://transfiles.ru/0x0aq
   Sin_city
 
10 - 31.05.21 - 18:27
Опечатка, есть возможность зеленое поправить перед отправкой. Вечер))))
   Garykom
 
11 - 31.05.21 - 19:29
(9) ты бы хоть документацию почитал и примеры посмотрел а?

path это ресурс на сервере ну там /users например
   Garykom
 
12 - 31.05.21 - 19:34
   Sin_city
 
13 - 31.05.21 - 20:17
Я очень хочу сказать с чьего нибудь сайта Yaml файл, из которого станет понятно "как".
Собственно я потому и в "пятой точке", что сделал копию с Pet Shop

У Озона скачать файл не получилось.... Скачал у Шелла. Но тоже не понял. То ли ключей у меня нет... Там 4 пароля.
123456 пробовал, не подошло.

Ночью качну "прогноз погоды", вроде там сделано (если сделано) как я хочу....
   Sin_city
 
14 - 31.05.21 - 20:18
Спецификацию про Paths and Operations по ссылке курил, спасибо.
Но единственно что понял  - что Paths не для этого...
   Вафель
 
15 - 31.05.21 - 20:55
Могу по мисте сваггер дать
   Asmody
 
16 - 31.05.21 - 21:10
(15) твой не правильный
   Asmody
 
17 - 31.05.21 - 21:10
(14) ты хоть понимаешь, что такое swagger?
   Волшебник
 
Модератор
18 - 31.05.21 - 21:30
(15) Давай договоримся о совместной разработке движка
   Asmody
 
19 - 31.05.21 - 23:31
(18) Давай движок на OneScript.Web перепишем? :)
   Garykom
 
20 - 01.06.21 - 00:14
(19) Нет уж, сделаем все правильно! Сначала напишем свой аналог OneScript
   Sin_city
 
22 - 01.06.21 - 05:20
Вафель, дай по мисте файл свагера. Может из него что нибудь пойму

Asmody В данном случае Swagger - это YAML файл, а интересует меня определенный в нем метод (прием) программирования.

В целом сваггер это "каша из топора". Но не будем тут разводить флуд.
   Sin_city
 
23 - 01.06.21 - 06:50
Вафель, Передавай не жсон, а x-url-encoded
Вот это метод работает. Но хочется через "параметры" и JSON, так эстетичней.
   Sin_city
 
24 - 01.06.21 - 06:51
В смысле и старый метод работал, но при новом методе 1 редактируемое поле, юзер не ошибется....
JSON Не виден... печалька.
   Asmody
 
25 - 01.06.21 - 07:14
[В данном случае Swagger - это YAML файл] - я думаю, что дальше продолжать дискуссию не имеет смысла.
   Asmody
 
26 - 01.06.21 - 07:28
Swagger - это не стандарт, не протокол, не спецификация и, тем более, не "YAML-файл". Это всего-навсего частный формат _документирования_ REST API. Не более того.
   АнализДанных
 
27 - 01.06.21 - 09:42
(0) В свое время очень долго бился с созданием файла для swagger. Я пока твой вопрос до конца не понял, но может тебе это поможет:

parameters:
      - name: 'Parametr_1'
        in: 'query'
        description: 'Параметр №1'
        required: true
        deprecated: false
        schema:
          type: 'string'
          format: 'string'
      - name: 'Parametr_2'
        in: 'query'
        description: ''Параметр №2'
        required: true
        deprecated: false
        schema:
          type: 'string'
          format: 'string'
      - name: 'Parametr_3'
        in: 'query'
        description: 'Параметр №3 (тип массив)'
        required: true
        deprecated: false
        schema:
          type: 'array'
          items:
            type: 'object'
            properties:
              id:
                type: 'string'
                format: 'string'
                description: 'Параметр №3'
      - name: 'Parametr_3'
        in: 'query'
        description: 'Параметр №4'
        required: true
        deprecated: false
        schema:
          type: 'array'
          items:
            type: 'object'
            properties:
              id:
                type: 'string'
                format: 'string'
                description: 'Параметр №4'
   АнализДанных
 
28 - 01.06.21 - 09:46
(0) Там было какое-то условие, что если ты используешь в качестве параметра тип body, то у тебя может быть только 1 параметр, но зато он сложного типа, например "структура" и в нее ты уже запихиваешь сколько тебе надо параметров. Важно, что такой параметр только 1! Если надо несколько параметров передавать, то я реализовывал, как у меня выше написано.
   Вафель
 
29 - 01.06.21 - 09:47
   Йохохо
 
30 - 01.06.21 - 10:26
а для YAML есть какой то редактор удобный?
 
 
   Вафель
 
31 - 01.06.21 - 10:33
а чем редактор свагерра не подошел?
   Вафель
 
32 - 01.06.21 - 10:34
(30) редакторов то полно, но в каждой области он свой
   Вафель
 
33 - 01.06.21 - 10:34
Как задача то стоит?
   Йохохо
 
34 - 01.06.21 - 10:39
(32) чтоб массивы добавлял, например, диапазоны


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.