У меня нет опыта работы с REST API, но я унаследовал один из них, для которого мне нужно разработать клиент на основе C# .NET Framework 4.71. Я понял, как вызывать команды, которым не нужны параметры. Например, я нашел это определение на сервере (приложение C# .NET Framework 4.71 WPF с графическим интерфейсом, которое использует swagger):
"openapi": "3.0.1",
...
"paths": {
"/api/v1/Run/New": {
"post": {
"summary": "...",
"description": "...",
"tags": [
"..",
".."
],
"responses": {...}
}
},
и обнаружил, что могу вызвать его из клиента, который я разрабатываю, используя:
HttpResponseMessage response = await client.PostAsJsonAsync("api/v1/Run/New", new object());
Я теряюсь, когда команде требуется параметр:
"/api/v1/Tests": {
"put": {
"summary": "...",
"description": "...",
"tags": [
"...",
"..."
],
"requestBody": {
"content": {
"multipart/form-data": {
"schema": { "$ref": "#/components/schemas/ListOfTestIds" }
}
}
},
"responses": {...}
}
}
Как мне передать список целых чисел? Что еще более важно, есть ли в Интернете руководство по переводу синтаксиса requestBody в параметры PostAsJsonAsync?
Вы можете использовать openApi-генератор для создания библиотеки классов из файла openapi-full.json.
После установки вы сможете сгенерировать библиотеку следующим образом:
openapi-generator generate -i openapi-full.json -g csharp -o ./output
Отнеситесь к команде с недоверием, прошло много времени с тех пор, как я в последний раз использовал генератор openApi.
Для вашего первого вопроса client.PutAsJsonAsync("/api/v1/Tests", **reference to the int[] here**)
должен работать для того, что вы намереваетесь (обратите внимание, что для этой конечной точки глагол PUT).
Что касается вашего второго вопроса, то хорошим ответом, как выразился @Sebastian, является openAPI-генератор . Несколько тем по этому поводу уже существуют, например этот ответ.
Обновлено: как-то пропустил, что содержимое конечной точки PUT представляет собой multipart/form-data - PutAsJsonAsync может не обрезать его здесь, и в этом случае эта ветка может быть полезна.