Je viens de commencer un nouveau projet et aimerait utiliser Swagger pour mon API Documentation . J'exécute actuellement mon projet localement, hébergé dans IIS.
J'ai modifié mon fichier hosts pour donner au site un en-tête valide. Pour cet article, disons que l'en-tête est publicapiurl.domain.com. Alors, je l'ai ajouté l'entrée suivante dans mon fichier hosts:
127.0.0.1 publicapiurl.domain.com
Maintenant, quand je tape publicapiurl.domain.com/swagger je reçois les fanfaronnades docs. La configuration initiale semblait assez simple mais j'ai un message rouge 'ERROR {...}' dans le coin inférieur droit de mon doc. Le message d'erreur se lit comme suit:
{"messages":["malformed or unreadable swagger supplied"],"schemaValidationMessages":[{"level":"error","domain":"validation","keyword":"type","message":"instance type (string) does not match any allowed primitive type (allowed: [\"object\"])","schema":{"loadingURI":"#","pointer":""},"instance":{"pointer":""}}]}
J'ai travaillé un peu avec Swagger dans le passé donc je pris le lien fourni à la doc fanfaronnades généré et copié le code. J'ai collé le code dans l'éditeur swagger.io/tools pour voir ce que leur processus de validation pourrait me dire. Le code que j'ai collé validé sans aucune erreur. Voici le code:
swagger: '2.0'
info:
version: v1
title: Generic.Public.Api
host: publicapiurl.domain.com
schemes:
- http
paths:
/api/Values:
get:
tags:
- Values
operationId: Values_Get
consumes: []
produces:
- application/json
- text/json
- application/xml
- text/xml
responses:
'200':
description: OK
schema:
type: array
items:
type: string
post:
tags:
- Values
operationId: Values_PostByvalue
consumes:
- application/json
- text/json
- application/xml
- text/xml
- application/x-www-form-urlencoded
produces: []
parameters:
- name: value
in: body
required: true
schema:
type: string
responses:
'204':
description: No Content
'/api/Values/{id}':
get:
tags:
- Values
operationId: Values_GetByid
consumes: []
produces:
- application/json
- text/json
- application/xml
- text/xml
parameters:
- name: id
in: path
required: true
type: integer
format: int32
responses:
'200':
description: OK
schema:
type: string
put:
tags:
- Values
operationId: Values_PutByidvalue
consumes:
- application/json
- text/json
- application/xml
- text/xml
- application/x-www-form-urlencoded
produces: []
parameters:
- name: id
in: path
required: true
type: integer
format: int32
- name: value
in: body
required: true
schema:
type: string
responses:
'204':
description: No Content
delete:
tags:
- Values
operationId: Values_DeleteByid
consumes: []
produces: []
parameters:
- name: id
in: path
required: true
type: integer
format: int32
responses:
'204':
description: No Content
definitions: {}
Est-ce que quelqu'un sait ce que l'erreur ci-dessus signifie que je reçois effectivement ou comment je peux être en mesure de le résoudre?
Ma meilleure estimation est qu'elle a quelque chose à voir avec ma modification du fichier hosts et un certain type de problème CORS peut-être ... mais je suis sérieusement à court de ressources. Toutes les suggestions sont appréciées!
EDIT:
je simplifie le contrôleur encore plus et a retiré le type de réponse XML, mais je reçois toujours la même erreur en cours d'exécution sur mon IIS local. La définition swagger valide toujours sans erreurs à l'intérieur de l'éditeur en ligne Swagger.
J'ai également changé du paquet de pince de Swashbuckle à Swashbuckle.Core mais le résultat est le même.
Voici la nouvelle définition de fanfaronnades:
swagger: '2.0'
info:
version: v1
title: Generic Public Api
host: l-publicapi.generic.com
schemes:
- http
paths:
/api/values/values:
get:
tags:
- Values
operationId: Values_Get
consumes: []
produces:
- application/json
- text/json
responses:
'200':
description: OK
schema:
type: array
items:
type: string
'/api/values/values/{id}':
get:
tags:
- Values
operationId: Values_GetByid
consumes: []
produces:
- application/json
- text/json
parameters:
- name: id
in: path
required: true
type: integer
format: int32
responses:
'200':
description: OK
schema:
type: string
definitions: {}
Toutes les suggestions supplémentaires?
Merci pour la réponse. Je vais essayer de spécifier uniquement JSON et voir si cela fait une différence. – Zoop
J'ai eu la même erreur et je l'ai résolu de cette façon: ouvrez votre fichier swagger dans Swagger UI et transformez-le en Swagger 3.0. Ensuite, téléchargez le fichier 3.0 sur votre projet hébergé. L'erreur "type d'instance (chaîne) ne correspond à aucun type primitif autorisé ..." doit être supprimée. – Peter