Имя: Пароль:
IT
Веб-мастеринг
Как в Swagger правильно описать запрос
,
0 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
1 Kesim
 
31.05.21
15:03
postman в помощь (делаешь интуитивно потом результат можно получить в нескольких форматах, в том числе курл)
2 Sin_city
 
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
5 Sin_city
 
31.05.21
17:21
Проблема увы не с тем что он не передает, он передает и все работает. Проблема с тем, что ОНО передается не совсем то что я хочу.
Да, у меня есть возможность изменить.... Но как то не то

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

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

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

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

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

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

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

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

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

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

В целом сваггер это "каша из топора". Но не будем тут разводить флуд.
23 Sin_city
 
01.06.21
06:50
Вафель, Передавай не жсон, а x-url-encoded
Вот это метод работает. Но хочется через "параметры" и JSON, так эстетичней.
24 Sin_city
 
01.06.21
06:51
В смысле и старый метод работал, но при новом методе 1 редактируемое поле, юзер не ошибется....
JSON Не виден... печалька.
25 Asmody
 
01.06.21
07:14
[В данном случае Swagger - это YAML файл] - я думаю, что дальше продолжать дискуссию не имеет смысла.
26 Asmody
 
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) чтоб массивы добавлял, например, диапазоны
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой