I don't have experience with REST APIs but I inherited one that I need to develop a C# .NET Framework 4.71-based client for. I figured out how to invoke commands that don't need parameters. For example, I found this definition in the server (a C# .NET Framework 4.71 WPF GUI app which uses swagger):
"openapi": "3.0.1",
...
"paths": {
"/api/v1/Run/New": {
"post": {
"summary": "...",
"description": "...",
"tags": [
"..",
".."
],
"responses": {...}
}
},
and found I could invoke it from the client I'm developing using:
HttpResponseMessage response = await client.PostAsJsonAsync("api/v1/Run/New", new object());
I get lost when the command requires a parameter:
"/api/v1/Tests": {
"put": {
"summary": "...",
"description": "...",
"tags": [
"...",
"..."
],
"requestBody": {
"content": {
"multipart/form-data": {
"schema": { "$ref": "#/components/schemas/ListOfTestIds" }
}
}
},
"responses": {...}
}
}
How would I pass a list of ints? More importantly, is there guidance online for translating requestBody syntax to PostAsJsonAsync parameters?
For your first question, client.PutAsJsonAsync("/api/v1/Tests", **reference to the int[] here**)
should work for what you intend (note that the verb is PUT for that endpoint).
As for your second question, a good answer as @Sebastian put it, is the openAPI-generator. Several topics on it already exist, such as this answer.
EDIT: somehow missed that the PUT endpoint content is multipart/form-data - PutAsJsonAsync might not cut it here, in which case this thread could be helpful.