Создать документ для azure API функции (машинописный текст) - PullRequest
1 голос
/ 03 августа 2020

Мне нужна ваша помощь, пожалуйста.

Я создал Rest api с azure функцией , которая позволяет возвращать список пользователей из базы данных cosmoDB, размещенной в облаке.

Я хотел создать документацию swagger для этого api, зная, что я использую azure function v2 с языком typescript для своего api.

Это мой скрипт типа кода (index.ts)

import { AzureFunction, Context, HttpRequest } from "@azure/functions";
import { CosmosClient } from "@azure/cosmos";  // @azure/cosmos c'est notre kit Azure Cosmos DB SQL JavaScript SDK 
const httpTrigger: AzureFunction = async function(
  context: Context,
  req: HttpRequest
): Promise<void> {
  try {


    const client = new CosmosClient(process.env.CONNECTION_STRING); 
    const database = client.database(process.env.COSMOS_DB_NAME);
    const container = database.container(process.env.COSMOS_DB_COLLECTION1_NAME);

    
    let iterator = container.items.readAll();
    let { resources } = await iterator.fetchAll();
    
    context.res = {
      body: resources
    };

  } catch (err) {
    context.res = {
      status: 500,
      body: err.message
    };
  }
};

export default httpTrigger;

Projet

А это мой файл swagger.yml

swagger: '2.0'
info:
  title: APIAzureFunction
  version: '2.0'
host: localhost:7071
basePath: /api
schemes:
  - https
  - http
paths:
  '/utilisateurs':
    get:
      tags:
        - Utilisateurs
      summary: Retourner toutes les utilisateurs.
      consumes:
        - application/json
      responses:
        '200':
          description: la liste des utilisateurs
          schema:
            type: object
            required:
              - userName
            properties:
              id:
                type: string
              nom:
                type: string
              prénom:
                type: string
              mdp:
                type: number
              Active:
                type: boolean    
  

предварительный просмотр в чванстве предварительный просмотр чванства

Я хотел бы отобразить список пользователей в чванстве, для этого я написал документацию yml (swagger.yml), когда я выполняю запрос, получаю пользователи в редакторе swagger я получаю эту ошибку: TypeError: Failed to fetch.

это изображение ошибки: введите описание изображения здесь

Спасибо за помощь

1 Ответ

0 голосов
/ 05 августа 2020

Согласно предоставленной вами информации, я могу воспроизвести проблему. Это проблема корса. Предварительный просмотр кода VS или редактор swagger - это одностраничное приложение. когда мы сможем использовать в них API из другого домена, мы столкнемся с проблемой корса. Итак, нам нужно настроить CORS для нашей функции azure. Чтобы узнать, как его настроить, обратитесь к здесь и здесь

Например

мой файл swagger.yml

swagger: '2.0'
info:
  title: APIAzureFunction
  version: '2.0'
host: localhost:7071
basePath: /api
schemes:
  - http
paths:
  '/http':
    get:
      tags:
        - Http
      summary: query cosmos db.
      consumes:
        - application/json
      responses:
        '200':
          description: response
             

мой код функции

import { AzureFunction, Context, HttpRequest } from "@azure/functions"
import { CosmosClient } from "@azure/cosmos";
const httpTrigger: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void> {
    context.log('HTTP trigger function processed a request.');
    try {


        const client = new CosmosClient(''); 
        const database = client.database('');
        const container = database.container('');
    
        
        let iterator = container.items.readAll();
        let { resources } = await iterator.fetchAll();
        
        context.res = {
          body: resources,
          headers: {
            'Content-Type': 'application/json'
        }
        };
    
      } catch (err) {
        context.res = {
          status: 500,
          body: err.message
        };
      }
};

export default httpTrigger;

  • Я не настраиваю CORS для своей функции

enter image description here

  • I configure CORS for function(I test on local)

Please add the following settings in local.settings.json to implement it

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "",
    "FUNCTIONS_WORKER_RUNTIME": "node"
    
  },
  "Host": {
    "CORS": "*"
  }
}

enter image description here введите описание изображения здесь

...