现在一切准备就绪,让我们来创建 API 端点和 CRUD 函数。请打开该Program.cs文件并将其替换为以下代码:
// Relevant using directivesusingAppwrite;usingAppwrite.Services;varbuilder=WebApplication.CreateBuilder(args);varapp=builder.Build();// Get necessary Appwrite configuration from appsettings.jsonvarprojectId=builder.Configuration["Appwrite:Project_Id"];varapiKey=builder.Configuration["Appwrite:Api_Key"];vardatabaseId=builder.Configuration["Appwrite:Database_Id"];varcollectionId=builder.Configuration["Appwrite:Collection_Id"];// Initialize object for Appwrite Clientvarclient=newClient().SetEndpoint("https://cloud.appwrite.io/v1").SetProject(projectId).SetKey(apiKey);// Initialize object for Databases service APIsvardatabases=newDatabases(client);// Create CRUD API endpointsapp.MapGet("/todos",async()=>{try{vartodos=awaitdatabases.ListDocuments(databaseId:databaseId,collectionId:collectionId);returnResults.Ok(todos);}catch(AppwriteExceptione){returnResults.NotFound(newDictionary<string,string>{{"message",e.Message}});}}).WithName("GetAllTodos");app.MapGet("/todos/{id}",async(stringid)=>{try{vartodo=awaitdatabases.GetDocument(databaseId:databaseId,collectionId:collectionId,documentId:id);returnResults.Ok(todo);}catch(AppwriteExceptione){returnResults.NotFound(newDictionary<string,string>{{"message",e.Message}});}}).WithName("GetTodo");app.MapPost("/todos",async(Todotodo)=>{try{vardocument=awaitdatabases.CreateDocument(databaseId:databaseId,collectionId:collectionId,documentId:ID.Unique(),data:todo);returnResults.Created($"/todos/{document.Id}",document);}catch(AppwriteExceptione){returnResults.BadRequest(newDictionary<string,string>{{"message",e.Message}});}}).WithName("CreateTodo");app.MapPut("/todos/{id}",async(stringid,Todotodo)=>{try{vardocument=awaitdatabases.UpdateDocument(databaseId:databaseId,collectionId:collectionId,documentId:id,data:todo);returnResults.NoContent();}catch(AppwriteExceptione){returnResults.BadRequest(newDictionary<string,string>{{"message",e.Message}});}}).WithName("UpdateTodo");app.MapDelete("/todos/{id}",async(stringid)=>{try{vardocument=awaitdatabases.DeleteDocument(databaseId:databaseId,collectionId:collectionId,documentId:id);returnResults.Ok(document);}catch(AppwriteExceptione){returnResults.NotFound(newDictionary<string,string>{{"message",e.Message}});}}).WithName("DeleteTodo");app.Run();
测试应用🌐
API 已准备就绪,我们可以开始测试了!请运行以下命令:
dotnet watch
现在您可以使用cURL、Postman或任何其他可以发送 HTTP 请求的 API 测试工具在本地测试所有端点。
API 端点
描述
请求正文
得到/todos
获取所有待办事项
得到/todos/{id}
获取 ID 的待办事项
邮政/todos
添加待办事项
待办事项: { "description": "<Enter todo description>", "isCompleted": false }
放/todos/{id}
更新待办事项
待办事项: { "description": "<Enter todo description>", "isCompleted": false }