Följa kodstandarder
Följ rekommendationer i koden när du skapar en anpassad anslutning.
API-definition
apiDefinition.swagger.json
kallas även swagger och är den plats där kopplingens beteende definieras.
- Indrag: Använd flikar med fyra blanksteg, använd inte svåra flikar.
- Eliminera efterföljande utrymme: Efterföljande utrymme omfattar allt tomt utrymme som finns i slutet av en rad när det inte finns något annat tecken som följer den. Svåra flikar räknas som ett efterföljande blanksteg om det inte finns någonting som följer dem.
Filens struktur
Om du vill ha en läsbar swagger-definition skapar du ett API-definition med följande struktur:
- SwaggerOpenAPI-version (för närvarande stöds endast 2.0)
- Information om kopplingen (rubrik, beskrivning, status, kontakter)
- Värd och scheman som stöds
- Avsnittet Förbrukar/tillverkar
- Sökvägar (definitioner av åtgärder och utlösare)
- Definitioner (datatyper som används i åtgärder och utlösare)
- Parametrar (parametrar som kan användas i olika åtgärder)
Åtgärder och utlösare
Använd kamelnotation för operationId
: använd versaler för alla ord (även de första). Lägg inte till bindestreck (-
) eller understreck (_
) för att separera ord.
Bra
"operationId": "GetMessages",
Dålig
"operationId": "getMessages", "operationId": "Get-Messages", "operationId": "Get_Messages",
Sammanfattning och beskrivning
Åtgärderna bör alltid ha en sammanfattning och en beskrivning. Sammanfattningen blir namnet på åtgärden så att den är kort och exakt. Beskrivningen bör ge mer information och avslutas med en punkt (.
).
De flesta beskrivningar placeras som tips i parameterrutorna och ger en kort och meningsfull text. Beskrivningar och summeringar bör inte ha samma innehåll.
Bra
"summary": "List Name", "description": "The list to check for messages.",
Dålig
"summary": "List", "description": "List.",
SVAR
Ange framgångskoden med hjälp av en HTTP 2xx
-svarstyp. Använd inte default
som ditt enda definierade svar, para ihop det med en framgångsdefinition i stället. Ange även kända svar om det är 4xx
/5xx
möjligt.
Använd
4xx
typfel när problemet uppstod på klientsidan. Här följer några exempel:401 - The username is invalid (it can only contain lowercase letters and numbers)
Använd
5xx
typfel när problemet uppstod på serversidan504 - The request timed-out
Bra
{ "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/Message" } }, "400": { "description": "Bad Request" }, "404": { "description": "Not Found" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "500": { "description": "Internal Server Error. Unknown error occurred" }, "default": { "description": "Operation Failed." } } }
Dålig
{ "responses": { "default": { "description": "OK", "schema": { "type": "string" } } } }
Definitioner och parametrar
För parametrar som visas på mer än en åtgärd skapar du en namnparameter i avsnittet parameters
i stället för att definiera parametern i varje åtgärd som använder den.
Bra
I det här exemplet definieras parameter
id
iIdInPath
och används i åtgärderGetMemberGroups
ochRemoveMemberFromGroup
.{ "paths": { "/groups/{id}/getMemberGroups": { "post": { "summary": "Get groups of a user", "description": "Get the groups a user is a member of.", "operationId": "GetMemberGroups", "parameters": [ { "$ref": "#/parameters/IdInPath" } ], "responses": { // response definitions } } }, "/groups/{id}/members/{memberId}/delete": { "delete": { "summary": "Remove member", "description": "Delete a member from a group.", "operationId": "RemoveMemberFromGroup", "parameters": [ { "$ref": "#/parameters/IdInPath" }, { "name": "memberId", "in": "path", "required": true, "description": "The Id of the member to be deleted.", "x-ms-summary": "Member Id", "type": "string" } ], "responses": { // response definitions } } } }, // definitions "parameters":{ "IdInPath": { "name": "id", "in": "path", "description": "Unique identifer of a group (Ex. 'id_group1').", "required": true, "x-ms-summary": "Group Id", "type": "string" }, } }
Genom att använda referenser på parametrar och definitioner blir ApiDefinition mer anpassningsbar. Om beskrivningen till exempel behöver uppdateras görs den på bara en plats, i stället för i alla de åtgärder som använder den.
Dålig
{ "paths": { "/groups/{id}/getMemberGroups": { "post": { "summary": "Get groups of a user", "description": "Get the groups a user is a member of.", "operationId": "GetMemberGroups", "parameters": [ { "name": "id", "in": "path", "description": "Unique identifer of a group (Ex. 'id_group1').", "required": true, "x-ms-summary": "Group Id", "type": "string" } ], "responses": { // response definitions } } }, "/groups/{id}/members/{memberId}/delete": { "delete": { "summary": "Remove member", "description": "Delete a member from a group.", "operationId": "RemoveMemberFromGroup", "parameters": [ { "name": "id", "in": "path", "description": "Unique identifer of a group (Ex. 'id_group1').", "required": true, "x-ms-summary": "Group Id", "type": "string" }, { "name": "memberId", "in": "path", "required": true, "description": "The Id of the member to be deleted.", "x-ms-summary": "Member Id", "type": "string" } ], "responses": { // response definitions } } } } }
Skapa en definitionspost och använd referensen över åtgärder med samma objektsvar.
Bra
Utöver att använda en refererad parameter refererar i detta exempel åtgärderna
GetUser
ochUpdateUser
samma objektresponsUserResponse
som definieras en gång i avsnittetdefinitions
.{ "paths": { "/v1.0/users/{id}": { "get": { "summary": "Get user", "description": "Get details for a user.", "operationId": "GetUser", "parameters": [ { "$ref": "#/parameters/IdInPath" } ], "responses": { "200": { "description": "200", "schema": { "$ref": "#/definitions/UserResponse" } } } }, "patch": { "summary": "Update user", "description": "Update the info for a user.", "operationId": "UpdateUser", "parameters": [ { "$ref": "#/parameters/IdInPath" } ], "responses": { "201": { "description": "Accepted", "schema": { "$ref": "#/definitions/UserResponse" } } }, "deprecated": false, "x-ms-no-generic-test": true } }, }, // definitions "definitions":{ "UserResponse": { "type": "object", "properties": { "id": { "description": "The unique identifier for the user.", "type": "string", "x-ms-summary": "Id" }, "email": { "description": "The email associated to the user.", "type": "string", "x-ms-summary": "Email" }, // more fields here } } } }
Fel
{ "paths": { "/v1.0/users/{id}": { "get": { "summary": "Get user", "description": "Get details for a user.", "operationId": "GetUser", "parameters": [ { "$ref": "#/parameters/IdInPath" } ], "responses": { "200": { "description": "200", "schema": { "$ref": "#/definitions/UserResponse" } } } }, "patch": { "summary": "Update user", "description": "Update the info for a user.", "operationId": "UpdateUser", "parameters": [ { "$ref": "#/parameters/IdInPath" } ], "responses": { "201": { "description": "Accepted", "schema": { "$ref": "#/definitions/UserResponse" } } }, "deprecated": false, "x-ms-no-generic-test": true } }, }, // definitions "definitions":{ "UserResponse": { "type": "object", "properties": { "id": { "description": "The unique identifier for the user.", "type": "string", "x-ms-summary": "Id" }, "email": { "description": "The email associated to the user.", "type": "string", "x-ms-summary": "Email" }, // more fields here } } } }
Relaterad information
Ge feedback
Vi uppskattar feedback på problem med vår plattform för anslutningsprogram eller förslag på nya funktioner. Om du vill lämna feedback går du till Skicka problem eller få hjälp med anslutningsprogram och väljer typ av feedback.