Power Apps + ASP.NET Core 6.0

이전에는 Azure Function에서 Open API를 정의하고 Power Apps로 불렀습니다.
https://zenn.dev/okazuki/articles/azure-function-powerapps
Azure Function을 선호하는 이유는 웹 API를 만드는 코드가 가장 적기 때문입니다!!이런 견해가 있다.하지만NET6에 도착하면 ASP.NET Core 측에서도 미니멀 API를 추가하면서 간단한 웹 API 정의가 간단해졌다.
대개 문서가 완성되지 않았지만 블로그에서 언급된 문서의 원자재는github가 제작한 것으로 확인된다.
https://github.com/dotnet/AspNetCore.Docs/blob/525b23a69e9903b39e40b8cd17a69579d50fb885/aspnetcore/tutorials/min-web-api.md
Visual Studio 2022를 사용하여 ASP를 프로젝트 템플릿으로 사용합니다.NET Core가 추가되었습니다.

이 템플릿으로 프로젝트를 만들면 Program.cs의 내용은 10줄 이하의 항목을 만들 수 있습니다.
Program.cs
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/", () => "Hello World!");

app.Run();
이렇게 해서 Hello World의 홈페이지 API를 어떻게 방문하고 답장하는지 정말 Minimal!!!이런 느낌이야.

Power Apps라고 불러보세요.


Power Apps 또는 Power Platform의 사용자 정의 커넥터에 등록하려면 Open API 정의가 필요하므로 이에 해당합니다.Open API 정의를 생성하기 위해서는 Swashbuckle.AspNetCore라는 패키지를 추가해야 하므로 NuGet에서 추가합니다.현재 6.2.3에 가입했습니다.
그리고 다음 코드를 추가합니다.추가된 부분은 세 줄뿐이다.
Open API의 정의를 생성하기 위해 ApiExplorer에 의존하는 것 같아서 처음에는 기능을 유효하게 설정했습니다.그리고 호출AddSwaggerGen.app.UseSwagger(...) 이번에 Open API의 v2 정의를 생성하기 위해 설정을 변경했습니다.Power Plaatform 희망 v2
Program.cs
var builder = WebApplication.CreateBuilder(args);
// 以下の2行を追加
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();

// 以下の1行を追加。今回は Power Platform のカスタムコネクタに登録するので Open API v2 にしました
app.UseSwagger(options => options.SerializeAsV2 = true);

app.MapGet("/", () => "Hello World!");

app.Run();
이 상태에서 https://localhost:XXXX/swagger/v1/swagger.json라는 URL에 액세스하면 다음과 같이 Open API 정의가 생성됩니다!좋다.

또 하나는 Power Plaatform에서 좋은 느낌을 소환할 수 있도록 수정했다.손을 넣었다고 하지만 반환값을 JSON으로 바꿔야 하기 때문에 문자열이 직접 되돌아오는 것을 익명으로 바꿨다.반환값이 대상이면 편하게 JSON을 할 수 있을 것 같아서 편해요.그리고 속성을 붙이고 이름을 붙이세요.이게 없으면 Power Plaatform의 사용자 정의 커넥터에 들어갈 때 이름이 없으면 혼나요.겸사겸사 매개 변수도 받아들였다.
Program.cs
var builder = WebApplication.CreateBuilder(args);
// 以下の2行を追加
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();

// 以下の1行を追加。今回は Power Platform のカスタムコネクタに登録するので Open API v2 にしました
app.UseSwagger(options => options.SerializeAsV2 = true);

app.MapGet("/", 
    // Open API の定義に名前をつける
    [EndpointName("Greet")]
    // パラメーターを追加、あとは戻り値が json になるようにオブジェクトを返す
    (string name) => new { Message = $"こんにちは {name} さん!" });

app.Run();
그럼 실행해.제이슨 보이죠?
swagger.json
{
  "swagger": "2.0",
  "info": {
    "title": "WebApplication9",
    "version": "1.0"
  },
  "paths": {
    "/": {
      "get": {
        "tags": [
          "WebApplication9"
        ],
        "operationId": "Greet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "name",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/String<>f__AnonymousType0"
            }
          }
        }
      }
    }
  },
  "definitions": {
    "String<>f__AnonymousType0": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string"
        }
      }
    }
  }
}
잘response를 응용 프로그램/json으로 만들어라.operationId도 Greet이 잘 되고.보기 좋아서 이곳에 저장합니다.
name 파라미터도 열고 불러내서 동작을 확인했습니다.듣기에 괜찮다.

인터넷으로 흘려주세요.


파워 앱스에서 호출할 수 있도록 클라우드에서 디자인하자...NET6 공식 발표가 11월이기 때문에 현재 애저(Azure)의 웹 앱스는 미리보기에서 지원되고 있다.웹 앱을 만들 때NET6(미리보기)를 선택합니다.NET6로 만든 제품으로 빠르게 디자인할 수 있어요.

한 11월쯤.NET6가 발표되면 바로 Azure에서도 정식으로 대응할 것 같습니다.먼저 대충 디자인하고 URL만 남겨 두세요.참고로 디버깅을 할 때 다음과 같은 메시지가 나오지만 괜찮습니다. 이렇게 디버깅을 진행합시다.정식 발매 후 홀가분하게 느껴질 거예요.

사용자 정의 커넥터 만들자.


이 근처는 애저펀션 때랑 똑같아요.그러니까 앞의 기사와 거기서 볼 수 있는 영상을 보세요.이번에는 인증이 별로 없어서 커넥터를 만들었고 연결도 간단히 끝냈어요.

한번 써보세요.


그럼, 쓰세요.Power Apps를 사용하여 다음과 같이 추가된 사용자 정의 커넥터를 응용 프로그램의 데이터 소스에 추가하는 적절한 응용 프로그램을 만듭니다.

버튼과 InputText를 버튼의 On Select에 놓고 방금 추가된 사용자 정의 연결기 (여기는 WebApplication 9의 이름으로 추가) 의 처리를 호출합니다.

UpdateContext({ greetResult: WebApplication9.Greet(TextInput1.Text)});
greetResult에서 결과가 나오기 때문에 적당한 탭의 Text 속성에 설정greetRetuls.message합니다.

작업 실행 및 확인


그럼 운전해.텍스트 상자에 이름을 입력하고 발송 단추를 누르면 메시지가 표시됩니다.제대로 만든 웹 API 불려!

총결산


그래서 그 전에 Azure Function에서 했던 일들인 ASP.NET Core의 Minimal API에서 시도해 봤습니다.이렇게 Open API만 생성하면 간단히 연결할 수 있어서 정말 다행입니다!
.NET6 출시 후 ASP.NET Core Minimal APIs는 코드량이 가장 적을 수 있으므로 조금 사용하고 싶습니다.뭐, API 수가 약간 증가하면 일반적으로 Controller로 정의됩니다.

좋은 웹페이지 즐겨찾기